0

我得到了我必须搜索特殊字符的要求,比如名字中带有单引号的名字c'te

前任:

select * from names where name like 'c'test%'

为此,我得到了类似的解决方案

select * from names where name like '%''%'

上面的答案对于搜索名字中有单引号的人很有用,但我的要求是我如何直接搜索名字

select * from names where name like 'c'test%'

因为从应用程序端他们将搜索标签姓氏 d'tech

请注意,我们在搜索名称时不应传递任何额外的引号

对此提供示例的帮助将不胜感激

提前致谢

4

1 回答 1

1

您只需要将它们加倍(我不知道“不应传递任何额外的引号”是什么意思,但这就是您的做法):

select column1,column2 -- don't use *
from dbo.names -- always use schema prefix
where name like 'c''test%'; -- terminate with semi-colon

但是,如果您使用正确的参数化语句,则无需担心。如果您正在动态构建查询,您只需要担心转义单引号,您不应该这样做,因为您会丢失强类型并打开自己的 SQL 注入。快速示例:

string sql = "SELECT * FROM names WHERE name LIKE @Name;";
using (SqlCommand cmd = new SqlCommand(sql, connection))
{
  cmd.Parameters.Add(new SqlParameter("Name", "c'test"));
  ...
}
于 2013-08-20T21:15:16.633 回答