我有必要搜索特殊字符,例如名字中有单引号的名字c'te
前:
select * from names where name like 'c'test%'
为此,我得到了像
这样的解决方案select * from names where name like '%''%'
上述答案对于搜索名字中有单引号的人有用,但我的要求是如何直接搜索名称
select * from names where name like 'c'test%'
因为从申请方面来看,他们会搜索最后一个名字“技术”
请注意,我们不应在搜索名称时传递任何额外的引号
有关此示例的帮助将不胜感激
提前致谢
答案 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"));
...
}