MySQL中LIKE与=查询结果不一致问题求助
问题分析与解决方法
核心原因是MySQL中反斜杠是默认转义字符,你写的'four\score_and_IFIF_years'里,\s会被MySQL解析为单个s,实际匹配的是fourscore_and_IFIF_years,和表中真实存储的four\score_and_IFIF_years不符,所以查不到结果。
以下是具体解决办法:
方法1:用双反斜杠转义
在查询语句中把单个反斜杠替换为双反斜杠,让MySQL识别为真实的单个反斜杠:select * from schema.table where `group` = 'four\\score_and_IFIF_years'方法2:查看字段真实存储值
如果不确定字段实际存储的内容,用十六进制输出确认,避免显示层的转义干扰:SELECT `group`, HEX(`group`) FROM schema.table WHERE `group` LIKE '%IFIF%'对比十六进制结果:比如反斜杠的十六进制是
5C,如果看到两个5C,说明实际存储的是双反斜杠,这时候需要用'four\\\\score_and_IFIF_years'来匹配。方法3:关闭反斜杠转义模式
临时关闭MySQL的反斜杠转义功能(仅当前会话有效),之后直接写单个反斜杠即可匹配:SET sql_mode = 'NO_BACKSLASH_ESCAPES'; select * from schema.table where `group` = 'four\score_and_IFIF_years'
内容的提问来源于stack exchange,提问作者gustavjaune
相关产品推荐
相关产品推荐

