LIKE操作符用于模糊查询,支持%(任意字符)和_(单个字符)通配符,可结合ESCAPE转义特殊字符,匹配时受排序规则影响,建议优化索引提升性能。

在 MySQL 中,LIKE 操作符用于在 WHERE 子句中进行模糊匹配,常用于搜索包含特定模式的字符串。它支持两个通配符:
- %:匹配任意数量的字符(包括零个字符)
- _:匹配单个字符
1. 使用 % 进行模糊匹配
如果你想查找某个字段中包含指定内容的记录,可以使用 %。
示例:查找姓名中包含 "明" 的用户
SELECT * FROM users WHERE name LIKE '%明%';
说明:
- %明%:表示“明”前后可以有任意字符
- 张明明、小明、明华 都会被匹配到
其他常见用法:
- LIKE '李%':以“李”开头的名字,如“李华”、“李白”
- LIKE '%峰':以“峰”结尾的名字,如“志峰”、“高峰”
2. 使用 _ 匹配单个字符
_ 只匹配一个字符,适合固定长度的模糊查询。
示例:查找名字为两个字且第二个字是“强”的人
SELECT * FROM users WHERE name LIKE '_强';
说明:
- _强:第一个字符任意,第二个必须是“强”
- 匹配“小强”,但不匹配“大强强”或“强哥”
3. 转义特殊字符
如果要查找的字符串本身包含 % 或 _,需要使用 ESCAPE 关键字指定转义符。
示例:查找用户名包含百分号 "%" 的记录
SELECT * FROM users WHERE name LIKE '%\%%' ESCAPE '\';
说明:
- ESCAPE '\' 表示反斜杠后的通配符被视为普通字符
- \% 就代表字面的 % 符号
同理,查找下划线:
SELECT * FROM users WHERE name LIKE '%\_%' ESCAPE '\';
4. 大小写敏感性说明
MySQL 的 LIKE 匹配是否区分大小写,取决于字段的排序规则(collation):
- 如果字段是 utf8mb4_general_ci(ci = case insensitive),则不区分大小写
- 如果想强制区分大小写,可使用 BINARY
示例:区分大小写的匹配
SELECT * FROM users WHERE name LIKE BINARY 'John%';
这样只会匹配 “JohnDoe”,不会匹配 “johndoe”。
基本上就这些。LIKE 是最常用的模糊查询方式,简单直接,适合大多数场景。注意性能问题:在大表上对无索引字段使用 LIKE '%xxx' 可能较慢,建议结合索引或考虑全文索引(FULLTEXT)优化搜索。不复杂但容易忽略细节。










