2013-08-20 80 views
0

我,我必须寻找特殊字符,如谁是有c'te如何搜索SQL Server 2008 R2中的特殊字符?

前在其名称中的单引号的名字要求:

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

为此,我得到了解决类似

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

上面的答案对搜索谁在他们的名字中使用单引号很有用,但我的要求是如何直接搜索名称,如

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

,因为从应用程序端,他们将搜索拉布勒姓D'高科技

请注意,我们不应该通过任何额外的报价,而搜索的名称

帮助这个用例将是赞赏

在此先感谢

回答

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")); 
    ... 
}