SQL 查询中使用 `IN` 关键字传递多个参数
问题出在将多个值作为参数传递给 'dep' 的方式上。在 SQL 查询中,'IN' 关键字后面的参数应该是一个逗号分隔的值列表,而不是一个包含逗号的字符串。
为了解决这个问题,您可以将 'depValue' 参数拆分为多个单独的值,并将它们作为参数的集合传递给查询。以下是一个示例代码:
string query = "SELECT mo_no AS '制令单', so_no AS '受订单', qty AS '计划数', qty_fin AS '完成数' FROM mf_mo WHERE sta_dd = @selectedDate AND dep IN (@dep)";
SqlCommand command = new SqlCommand(query, connection);
command.Parameters.AddWithValue("@selectedDate", selectedDate);
// 将 depValue 拆分为多个值
string[] depValues = depValue.Split(',');
List<string> depParameters = new List<string>();
for (int i = 0; i < depValues.Length; i++)
{
string paramName = "@dep" + i;
command.Parameters.AddWithValue(paramName, depValues[i].Trim());
depParameters.Add(paramName);
}
// 构建 dep 参数的查询条件
string depCondition = string.Join(",", depParameters);
// 替换查询中的 @dep 参数
query = query.Replace("@dep", depCondition);
command.CommandText = query;
上述代码将 'depValue' 拆分为多个值,并为每个值创建一个带有唯一名称的参数。然后,它使用 'string.Join' 方法将这些参数名称连接为逗号分隔的字符串,并将其替换到查询中的 'dep' 参数位置。这样,您就可以正确地将多个值传递给 'dep' 参数,并进行查询。
原文地址: https://www.cveoy.top/t/topic/Wq3 著作权归作者所有。请勿转载和采集!