如何在SQL LIKE %%中添加char类型SqlParameter?

时间:2015-04-20 14:39:00

标签: c# tsql ado.net

无法解决这个问题,如果在类型为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%'");    

2 个答案:

答案 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;