具有多个反斜杠的MySQL LIKE条件,最后是\

时间:2016-05-07 14:53:37

标签: mysql sql-like

我刚才注意到,如果我在db字段中有一个值,例如'\\\',我希望使用SQL找到它:

SELECT * FROM table WHERE field LIKE '%xxxx%' (wildcards at both sides)

然后我不仅需要将3次'\\\\'放入sql中,而且最后还要再添加一次反斜杠。

所以我的SQL将是

SELECT * FROM table WHERE field LIKE '%\\\\\\\ \\\\\\\ \\\\\\\ \%'; -- (I put spaces only here, just for clarity)

但是如果我使用LIKE 'xxxx'

然后最后不需要那个额外的反斜杠(总共12个反斜杠而不是13个)

sql fiddle

注意:使用utf8mb4_unicode_ci排序时会发生这种情况(如果使用默认排序规则,一切正常)

1 个答案:

答案 0 :(得分:0)

如果你真的不需要使用反斜杠作为转义字符,那么为了让事情变得容易一些,你可以用

来禁用它。
SET SESSION sql_mode = 'NO_BACKSLASH_ESCAPES';

您还可以通过在启动MySQL时在命令行中包含--sql-mode="NO_BACKSLASH_ESCAPES"或在MySQL选项文件(sql-mode="NO_BACKSLASH_ESCAPES"中包含my.cnf来禁用backslash-as-escape =字符行为* nix,Windows上的my.ini

SQLFiddle here

祝你好运。