mysql - 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引擎('!'
符号是什么意思?)。
提前致谢。
解决方案
ESCAPE 关键字用于转义模式匹配字符,例如 (%) 百分比和下划线 (_),如果它们构成数据的一部分。
假设我们要检查可以使用的字符串“67%”;
LIKE '67#%%' ESCAPE '#';
如果我们想搜索电影“67% Guilty”,我们可以使用如下所示的脚本来做到这一点。
SELECT * FROM movies WHERE title LIKE '67#%%' ESCAPE '#';
请注意 LIKE 子句中的双“%%”,红色“%”中的第一个被视为要搜索的字符串的一部分。另一个用于匹配后面的任意数量的字符。
如果我们使用类似的查询,同样的查询也将起作用
SELECT * FROM movies WHERE title LIKE '67=%%' ESCAPE '=';
推荐阅读
- javascript - 为什么我可以将 Vue 模板导入 EJS 文件?
- python - 骰子总和游戏
- singularity-container - 无法构建可写奇点容器
- mysql - 我已经编写了查询以在给数据库中以 S 和 V 开头的名称排序,出现的错误如下
- python - 我正确使用 os.system 吗?我的应用程序将不再打开
- javascript - 回调函数中 this 的上下文
- sql - SQL 函数调用
- typescript - Typescript 类方法,它采用调用者的实例类型
- haskell - 如何使`co-log`的`withLog`与`Scotty`一起工作?
- sql - 获取重叠时间段的计数