MySQL通配符使用LIKE过滤特殊字符

Mat*_*dar 5 php mysql

我的 SQL 查询是:

SELECT * FROM listings  WHERE title LIKE '%Debbie\'s Pet Grooming%' 
Run Code Online (Sandbox Code Playgroud)

但是,当我运行此查询时,我没有得到任何结果。你能建议一下原因吗?我的数据库表如下:

在此输入图像描述

Nic*_*ick 2

您的问题是,您以某种方式设法在数据库中的值中获取了实际的反斜杠,因此您需要搜索它。尝试这个:

\n\n
SELECT * FROM listings  WHERE title LIKE \'%Debbie\\\\\\\\\\\'s Pet Grooming%\' \n
Run Code Online (Sandbox Code Playgroud)\n\n

dbfiddle 上的演示

\n\n

手册中:

\n\n
\n

由于 MySQL 在字符串中使用 C 转义语法(例如 \xe2\x80\x9c\\n\xe2\x80\x9d 来\n 表示换行符),因此必须将任何 \xe2\x80\x9c\\\xe2 加倍\x80\x9d 在 LIKE 字符串中使用\n。例如,要搜索 \xe2\x80\x9c\\n\xe2\x80\x9d,请将其指定为 \xe2\x80\x9c\\\\n\xe2\x80\x9d。\n 要搜索 \xe2 \x80\x9c\\\xe2\x80\x9d,指定为\xe2\x80\x9c\\\\\\\\\xe2\x80\x9d;这是因为解析器会删除\n 一次反斜杠,并在进行模式\n 匹配时再次删除,只留下一个反斜杠进行匹配。

\n
\n