我有几个EMP的名字,像具有特殊字符的SQL查询 - 如何处理?
- 约翰,1
- 魔鬼的
- 玉米
像这样
现在,当我在寻找这些名字我正在使用
select * from emp where empname like ('john,1,devil's,corn')
但我没有得到预期的值也收到错误,因为emp名称包含特殊的字符和''。
有人可以帮我解决这个问题吗?
我有几个EMP的名字,像具有特殊字符的SQL查询 - 如何处理?
- 约翰,1
- 魔鬼的
- 玉米
像这样
现在,当我在寻找这些名字我正在使用
select * from emp where empname like ('john,1,devil's,corn')
但我没有得到预期的值也收到错误,因为emp名称包含特殊的字符和''。
有人可以帮我解决这个问题吗?
这里假设你有你的榜样串
完全匹配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%'
,如果你使用mysql:
select * from emp where empname like ('john,1','devil\'s','corn')
我认为,对于sql服务器,你可以通过''(两个单一qoute)而不是\'转义单引号。 – Ratinho 2011-02-02 13:39:47
select * from emp where empname like ('john\,1','devil\'s','corn\'') escape '\'
使用关键字逃生提的查询转义字符。
对于大多数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%'
如果您正在寻找“恶魔”的empname,那么我同意使用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
如果你想匹配在中间使用“恶魔”的名字,那么你可以使用
select * from emp where empname like ('%devil\'s%')
什么版本的SQL(甲骨文,MYSQL,Microsoft SQL) – Sparky 2011-02-02 13:32:59
对不起,我正在使用sql server 2005 – jestges 2011-02-02 13:34:02