mysql中使用like进行模糊搜索匹配的转义问题!
时间:2007-08-21 来源:freebendy
在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
由于 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
相关阅读 更多 +