问题出在将多个值作为参数传递给 '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' 参数,并进行查询。

SQL 查询中使用 `IN` 关键字传递多个参数

原文地址: https://www.cveoy.top/t/topic/Wq3 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录