SQL中使用Like命令时如何忽略单引号以正确查询数据
解决SQL LIKE命令中包含单引号的匹配问题
这个问题我之前处理过好几次!单引号在SQL里是用来标记字符串边界的,直接把带单引号的内容写进LIKE条件里,要么会触发语法错误,要么根本匹配不到你想要的结果。下面给你几个实用的解决办法:
方法1:用双单引号转义(最通用)
几乎所有主流SQL数据库(MySQL、SQL Server、PostgreSQL、Oracle等)都支持用两个连续的单引号来表示字符串中的一个普通单引号。针对你的需求,查询语句可以这么写:
SELECT * FROM your_table WHERE your_column LIKE 'Status changed from ''Closed'' to ''Transferred''' OR your_column LIKE 'Status changed from ''Resolved'' to ''Transferred'''
原理很简单:把原字符串里的每个'替换成'',SQL就会把它识别为字符串内容的一部分,而不是字符串的结束标记。
方法2:用通配符简化查询
因为你要匹配的两个字符串只有中间的状态值不同,完全可以用%通配符合并成一条LIKE条件,让代码更简洁:
SELECT * FROM your_table WHERE your_column LIKE 'Status changed from ''%'' to ''Transferred'''
这样就能匹配所有“从任意状态转到Transferred”的记录,刚好覆盖你需要的两种情况。如果之后还要加其他状态,这条语句也不用修改。
方法3:使用ESCAPE关键字(部分数据库支持)
有些数据库允许你自定义转义字符,比如用\来转义单引号,这时可以结合ESCAPE关键字:
-- 以MySQL为例 SELECT * FROM your_table WHERE your_column LIKE 'Status changed from \'Closed\' to \'Transferred\' ESCAPE '\''
不过这种方式的通用性不如双单引号转义,除非你有特殊需求,否则优先用方法1或2。
另外补充一句:如果你的需求是精确匹配这两个字符串,其实用=代替LIKE也可以,同样只需要转义单引号就行,效率还更高哦~
内容的提问来源于stack exchange,提问作者Shailaja
相关产品推荐
相关产品推荐

