无法解决这个问题,如果在类型为char的情况下如何在SQL LIKE %%中添加参数?
SQL.Append("(Code LIKE @Code)");
var sqlParameter = new SqlParameter("@Code",
System.Data.SqlDbType.Char,
10,
System.Data.ParameterDirection.Input,
true,
0,
0,
"Code",
System.Data.DataRowVersion.Current,
"'%300%'");
答案 0 :(得分:1)
尝试使用没有单引号的参数值。我认为他们将您的价值部分视为string literal而不是参数。
"%300%"
答案 1 :(得分:1)
您的代码有两个问题,第一个Soner pointed out,您需要从字符串中删除单引号。第二个是你使用System.Data.SqlDbType.Char
作为数据类型并将大小10传递给构造函数的事实。这将在您的字符串末尾填充10个空格,有效地将您的字符串转换为"'%300%' "
请改用SqlDbType.VarChar
。此外,您不需要构造函数中的所有参数,只需填写您需要的3,然后使用您创建的参数的.Value
属性。
SQL.Append("(Code LIKE @Code)");
var sqlParameter = new SqlParameter("@Code", SqlDbType.VarChar, 10);
sqlParameter.Value = "%300%";
另外,另一个可能对你有用的技巧。如果您希望始终将%放在双方但不希望用户必须提供它们,您可以将它们放入查询中并仍然使用参数。
string code = "300";
SQL.Append("(Code LIKE '%' + @Code + '%')");
var sqlParameter = new SqlParameter("@Code", SqlDbType.VarChar, 10);
sqlParameter.Value = code;