在 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)优化搜索。不复杂但容易忽略细节。
