如何在SQL Server 2008 R2中搜索特殊字符?

时间:2013-08-20 20:50:45

标签: sql-server sql-server-2008-r2

我有必要搜索特殊字符,例如名字中有单引号的名字c'te

前:

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

为此,我得到了像

这样的解决方案
select * from names where name like '%''%'

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

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

因为从申请方面来看,他们会搜索最后一个名字“技术”

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

有关此示例的帮助将不胜感激

提前致谢

1 个答案:

答案 0 :(得分: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"));
  ...
}