MySQL:查询时 "escape '!'" 是什么意思
MySQL: What does means "escape '!'" on query
编辑别人的代码发现了这个查询:
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 '!'
之外,我什么都懂。我想这与 'escaping' 相关,如果是,不知道在查询之前是否更好地实现它(代码汤是 PHP)或让工作交给数据库引擎('!'
符号是什么意思?)。
提前致谢。
您不需要在此特定查询中转义,但如果您曾经这样做(即,如果您的搜索字词中有 % 字符),您将需要一个转义字符来区分搜索中的 %在查询的类似部分充当占位符的术语和其他 % 字符。
在这种情况下,您可以使用使用 escape
关键字定义的字符对搜索词中的 % 进行转义。
例如,假设您要在名称字段中查找字符串 25%
。你会这样:
WHERE p.name LIKE '%25!%%' escape '!'
ESCAPE 关键字用于转义模式匹配字符,例如 (%) 百分比和下划线 (_),如果它们构成数据的一部分。
假设我们要检查我们可以使用的字符串“67%”;
LIKE '67#%%' ESCAPE '#';
如果我们要搜索电影“67% Guilty”,我们可以使用下面显示的脚本来执行此操作。
SELECT * FROM movies WHERE title LIKE '67#%%' ESCAPE '#';
注意LIKE子句中的双“%%”,红色的第一个“%”被视为要搜索的字符串的一部分。另一个用于匹配后面任意数量的字符。
如果我们使用像
这样的东西,同样的查询也可以工作
SELECT * FROM movies WHERE title LIKE '67=%%' ESCAPE '=';
编辑别人的代码发现了这个查询:
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 '!'
之外,我什么都懂。我想这与 'escaping' 相关,如果是,不知道在查询之前是否更好地实现它(代码汤是 PHP)或让工作交给数据库引擎('!'
符号是什么意思?)。
提前致谢。
您不需要在此特定查询中转义,但如果您曾经这样做(即,如果您的搜索字词中有 % 字符),您将需要一个转义字符来区分搜索中的 %在查询的类似部分充当占位符的术语和其他 % 字符。
在这种情况下,您可以使用使用 escape
关键字定义的字符对搜索词中的 % 进行转义。
例如,假设您要在名称字段中查找字符串 25%
。你会这样:
WHERE p.name LIKE '%25!%%' escape '!'
ESCAPE 关键字用于转义模式匹配字符,例如 (%) 百分比和下划线 (_),如果它们构成数据的一部分。
假设我们要检查我们可以使用的字符串“67%”;
LIKE '67#%%' ESCAPE '#';
如果我们要搜索电影“67% Guilty”,我们可以使用下面显示的脚本来执行此操作。
SELECT * FROM movies WHERE title LIKE '67#%%' ESCAPE '#';
注意LIKE子句中的双“%%”,红色的第一个“%”被视为要搜索的字符串的一部分。另一个用于匹配后面任意数量的字符。
如果我们使用像
这样的东西,同样的查询也可以工作SELECT * FROM movies WHERE title LIKE '67=%%' ESCAPE '=';