mysql用like模糊查询的转义字符问题
mysql用like模糊查询的转义字符问题
mysql用like模糊查询的转义字符问题
在mysql中对\n,\0,\',\",\b,\r,\t,\Z,\这些特殊字符进行查找的时候,如果用=这些进行精确匹配的时候条件值为
\\n,\\0,\\',\\",\\b,\\r,\\t,\\Z,\\就可以进行准确查找;
但是如果使用like的话就应是使用:\\\\n,\\\\0,\\\\',\\\\",\\\\b,\\\\r,\\\\t,\\\\Z,\\\\。
由于 MySQL在字符串中使用 C转义语法(例如, 用'\n'代表一个换行字符),在LIKE字符串中,必须将用到的'\'双写。例如, 若要查找'\n',
必须将其写成 ‘\\n’。
而若要查找 '\', 则必须将其写成 it as '\\\\';原因是反斜线符号会被语法分析程序剥离一次,在进行模式匹配时,又会被剥离一次,最后
会剩下一个反斜线符号接受匹配。
以下是我测试的结果:
SELECT 'aa''a""a' ; --> aa'a""a
SSELECT '\\\\n' ; --> \\n
SELECT '\\n' ; --> \n
SELECT '\\n' like '\\n' ; --> 0
SELECT '\\n' like '%\\n' ; --> 1
SELECT '\\n' like '_\\n' ; --> 1