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

How to add char type SqlParameter in SQL LIKE % %?

无法正常工作,如何在 SQL LIKE % % 类型为 char 时添加参数?

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%'");    

尝试使用不带单引号的参数值。我认为他们将您的价值部分作为 string literal 而不是参数。

"%300%"

您的代码有两处错误,第一个 ,您需要从字符串中删除单引号。第二个是您使用 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;