首页 > 解决方案 > MySQL:查询时“转义'!'”是什么意思

问题描述

编辑别人的代码发现了这个查询:

SELECT c.name AS category_name,
       p.id,
       p.name,
       p.description,
       p.price,
       p.category_id,
       p.created
FROM   products p
       LEFT JOIN categories c
              ON p.category_id = c.id
WHERE  p.name LIKE '%keyword%' escape '!'
        OR p.description LIKE '%keyword%' escape '!'
ORDER  BY p.name ASC
LIMIT  0, 6

除了第 11 行和第 12 行外,我什么都理解escape '!'。我想这与“转义”有关,如果发生这种情况,不知道在查询之前是否更好地实现它(代码汤是 PHP)还是让工作交给DB引擎('!'符号是什么意思?)。

提前致谢。

标签: mysqlmysql-real-escape-string

解决方案


ESCAPE 关键字用于转义模式匹配字符,例如 (%) 百分比和下划线 (_),如果它们构成数据的一部分。

假设我们要检查可以使用的字符串“67%”;

LIKE '67#%%' ESCAPE '#';

如果我们想搜索电影“67% Guilty”,我们可以使用如下所示的脚本来做到这一点。

SELECT * FROM movies WHERE title LIKE '67#%%' ESCAPE '#';

请注意 LIKE 子句中的双“%%”,红色“%”中的第一个被视为要搜索的字符串的一部分。另一个用于匹配后面的任意数量的字符。

如果我们使用类似的查询,同样的查询也将起作用

SELECT * FROM movies WHERE title LIKE '67=%%' ESCAPE '=';

推荐阅读