我很少有像
这样的名字
- john,1
- 魔鬼的
- 玉米
醇>
类似这样的事情
现在,当我正在搜索这些名字时,我正在使用
select * from emp where empname like ('john,1,devil's,corn')
但是我没有得到预期的值也因为我的名字包含特殊的字符,例如和'。
有人可以帮我解决这个问题吗?
答案 0 :(得分: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%'
答案 1 :(得分:0)
如果你使用mysql:
select * from emp where empname like ('john,1','devil\'s','corn')
答案 2 :(得分:0)
select * from emp where empname like ('john\,1','devil\'s','corn\'') escape '\'
使用关键字转义来提及查询的转义字符。
答案 3 :(得分: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%'
答案 4 :(得分:0)
如果你正在寻找“魔鬼”的同名词,那么我同意使用Sachin和Ratinho使用的逃脱角色。
但是,like
子句用于与另一个子句类似的东西。例如,如果您正在寻找以“devil's”开头的内容,那么您可以使用
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%')