编辑其他人的代码发现此查询:
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)或将作业交给数据库引擎(这是'!'
符号的意思吗?)。
谢谢。
答案 0 :(得分:1)
您无需在此特定查询中进行转义,但如果需要(例如,如果您在搜索字词中包含%字符),则需要一个转义字符来区分作为搜索字词一部分的%和在查询的类似部分中用作占位符的其他%字符。
在这种情况下,您使用用escape
关键字定义的字符来对搜索词中的%进行转义。
例如,假设您要在名称字段中查找字符串25%
。您将像这样去
WHERE p.name LIKE '%25!%%' escape '!'
答案 1 :(得分:1)
ESCAPE关键字用于转义模式匹配的字符,例如(%)百分比和下划线(_)(如果它们构成数据的一部分)。
让我们假设我们要检查可使用的字符串“ 67%”;
LIKE '67#%%' ESCAPE '#';
如果我们要搜索电影“ 67%有罪”,则可以使用下面显示的脚本来实现。
SELECT * FROM movies WHERE title LIKE '67#%%' ESCAPE '#';
请注意LIKE子句中的双“ %%”,红色的“%”中的第一个被视为要搜索的字符串的一部分。另一个用于匹配后面任意数量的字符。
如果我们使用类似的
,同样的查询也将起作用SELECT * FROM movies WHERE title LIKE '67=%%' ESCAPE '=';