在 SQL 中,LIKE 操作符用于在 WHERE 子句里进行模糊查询,主要用来判断某个字段的值是否符合指定的模式。当我们想找出包含指定关键词的所有记录时,核心做法就是把关键词放在两个百分号(%)中间,因为 % 代表任意长度(包括零长度)的字符序列。

LIKE 操作符的基础语法
LIKE 最常见的形式如下:
SELECT column1, column2 FROM table_name WHERE column1 LIKE '%关键词%';
上面语句中的 %关键词% 表示:字段值中只要出现了“关键词”这三个字,无论前后有什么其他内容,都会被匹配出来。
使用通配符实现不同匹配规则
LIKE 支持几种通配符,理解它们才能准确控制匹配范围:
- %:匹配零个或多个任意字符
- _:匹配单个任意字符
- [字符集]:匹配括号内任意一个字符(部分数据库支持)
只包含指定关键词的记录
如果我们有一张文章表 articles,想查出标题里带有“数据库”的所有文章:
SELECT id, title FROM articles WHERE title LIKE '%数据库%';
转义特殊字符
如果关键词里本身含有 % 或 _,需要用 ESCAPE 定义转义符,否则它们会被当作通配符:
SELECT * FROM products WHERE name LIKE '%50%%' ESCAPE '';
这条语句查找名称中包含“50%”的字符串,反斜杠声明为转义符,让第二个 % 失去通配含义。
常见注意事项
大小写敏感问题
不同数据库对 LIKE 的大小写处理不同。MySQL 在默认排序规则下不区分大小写,而 PostgreSQL 默认区分。若需统一忽略大小写,可用 lower() 函数:
SELECT * FROM users WHERE lower(email) LIKE '%admin%';
性能考虑
以 %关键词% 开头的模糊查询通常无法使用普通 B+ 树索引,数据量大时可能变慢。可考虑全文索引(如 MySQL 的 FULLTEXT)来优化。
| 匹配需求 | LIKE 写法 |
|---|---|
| 包含“sql” | LIKE '%sql%' |
| 以“sql”开头 | LIKE 'sql%' |
| 以“sql”结尾 | LIKE '%sql' |
| 第二个字为 s | LIKE '_s%' |
掌握上述写法,就能在 SQL 查询中自如地使用 LIKE 操作符匹配包含指定关键词的所有记录。