首页/数据/SQL 速查/LIKE 通配符与 ESCAPE 转义
本包目录(311 条)
查询基础33 条连接与子查询40 条聚合与窗口函数54 条
函数速查60 条
变更与事务52 条性能与执行计划72 条

LIKE 通配符与 ESCAPE 转义

LIKE 里 % 与 _ 是通配符:搜索字面量 % / _ 必须转义;用 ESCAPE 子句显式指定转义符比依赖反斜杠更清晰。

SQL 速查数据更新于 2026-10-12

示例

示例
-- 找包含字面量下划线的内容(ESCAPE '!' 两库通用)
SELECT id, name FROM files
WHERE name LIKE '%!_%' ESCAPE '!';

-- 找以字面量 % 开头
SELECT * FROM logs WHERE msg LIKE '!%%' ESCAPE '!';
%匹配任意长度字符(含 0 个)
_匹配恰好 1 个字符
转义符本身要搜索字面量转义符需写两次,如 '!!'
MySQL 默认反斜杠也是默认转义符(受 NO_BACKSLASH_ESCAPES 影响)
LIKE 以 % 开头('%kw%')无法走 B+ 树索引;高频搜索改用全文索引或搜索服务。

易错点

  • 用户输入直接拼进 LIKE 会放大通配符(输入 % 匹配全表),拼接前转义 % 与 _ 或改用参数化 + 预转义
  • PostgreSQL 中 LIKE 区分大小写、ILIKE 不区分;MySQL 取决于排序规则,行为差异常在迁移时暴露

数据来源与参考

  • MySQL 8.0 Reference Manual · Pattern Matching
  • PostgreSQL Documentation · LIKE
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌