带有特殊字符的SQL查询 - 如何处理?

问题描述 投票:1回答:5

我的名字很少

  1. 约翰,1
  2. 鬼才
  3. 玉米

这样的事情

现在,当我正在搜索我正在使用的这些名字时

select * from emp where empname like ('john,1,devil's,corn')

但我没有得到预期的值,我也得到错误,因为emp名称包含特殊的字符,如'和'。

有人可以帮我解决这个问题吗?

sql sql-server-2005 sql-like
5个回答
5
投票

假设您的示例字符串中有3个离散名称

完全符合。你需要加倍报价。

select * from emp where
empname IN ('john,1' , 'devil''s', 'corn')

你也不能在SQL Server中使用LIKE / IN。

select * from emp where
  empname like '%john,1%'
  OR
  empname like '%devil''s%'
  OR
  empname like '%corn%'

0
投票

如果你使用mysql:

select * from emp where empname like ('john,1','devil\'s','corn')

0
投票
select * from emp where empname like ('john\,1','devil\'s','corn\'') escape '\'

使用关键字转义来提及查询的转义字符。


0
投票

如果你正在寻找一个“魔鬼”的名字,那么我同意使用Sachin和Ratinho使用的逃脱角色。

但是,like子句用于类似于另一个的东西。例如,如果您正在寻找以“魔鬼”开头的东西,那么您可以使用

select * from emp where empname like ('devil\'s%')

哪个会匹配

devil's peak
devil's beard
devil's

但不是

Devil's peak
deviled eggs
devil

如果你想在中间匹配一个empname和“devil's”,那么你可以使用

select * from emp where empname like ('%devil\'s%')

0
投票

例如,对于大多数SQL版本,您需要转义单引号。

select * from emp where empname like ('john,1,devil''s,corn')

另外,上面的例子是寻找一个非常具体的字符串值,你需要包括*或?作为通配符,所以要查找像魔鬼一样的所有empname,请使用

select * from emp where empname like '%devil''s%'

另一个例子

select * from emp where empname like 'john,1%'
© www.soinside.com 2019 - 2024. All rights reserved.