MySQL中搜索含反斜杠的文本失败,请求技术支持
MySQL含反斜杠字符串的查询问题解决
不是不能搜索带反斜杠的字符串,是你写的查询语句没处理好MySQL的转义规则。
问题根源
MySQL默认把反斜杠(\)当成转义字符:
- 你写的查询语句
'apple\"apple',会被MySQL解析成apple"apple(反斜杠被用来转义双引号了),但你数据库里存的是apple\"apple(带反斜杠),自然匹配不到。 - LIKE查询的逻辑一样,反斜杠会被当作通配符的转义符,导致匹配目标出错。
正确写法
要匹配数据库里的反斜杠,得在查询语句里用两个反斜杠表示一个实际存在的反斜杠:
精确匹配(=)
select * from table1 where title='apple\\\"apple';
解析后实际匹配的就是apple\"apple——\\变成一个\,\"变成一个"。
LIKE匹配
LIKE里反斜杠默认是转义符,同样要转义:
select * from table1 where title like 'apple\\\"apple';
嫌麻烦的话,也可以临时关闭反斜杠转义:
SET sql_mode = 'NO_BACKSLASH_ESCAPES'; select * from table1 where title like 'apple\"apple';
查完记得改回原来的sql_mode就行。
额外提醒
如果你本来是想存apple"apple(只有双引号,没反斜杠),那插入时写apple\"apple是对的,这时候用'apple"apple'或者'apple\"apple'都能查到。但按你说的数据库里确实有反斜杠,就按上面的方法来。
内容的提问来源于stack exchange,提问作者Daffodil
相关产品推荐
相关产品推荐

