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