LIKE操作符用于mysql中模糊查询,支持%(匹配任意字符)和_(匹配单个字符)通配符;可通过ESCAPE转义特殊字符,结合BINARY控制大小写敏感,并建议前缀匹配以利用索引提升性能。

在 MySQL 中,LIKE 操作符用于在 WHERE 子句中进行模糊匹配查询,常用于查找符合某种模式的字符串数据。它支持通配符来定义匹配规则,适合处理不确定具体内容但知道部分特征的搜索场景。
LIKE 的基本语法
使用 LIKE 的基本结构如下:
select 列名 FROM 表名 WHERE 列名 LIKE ‘模式’;
其中,“模式”可以包含以下两种主要通配符:
- %:匹配任意数量的字符(包括零个字符)
- _:匹配单个字符
使用 % 进行多字符模糊匹配
百分号(%)是最常用的通配符,用来替代零个或多个字符。
例如,查询姓名以“张”开头的所有记录:
SELECT * FROM users WHERE name LIKE ‘张%’;
查找名字中包含“小”的所有用户:
SELECT * FROM users WHERE name LIKE ‘%小%’;
查找以“老师”结尾的名字:
SELECT * FROM users WHERE name LIKE ‘%老师’;
使用 _ 匹配单个字符
下划线(_)代表一个任意字符。适用于已知字符串长度或特定位置字符的情况。
比如,查找名字为两个字且姓“李”的用户:
SELECT * FROM users WHERE name LIKE ‘李_’;
若要查找第三个字是“强”的三字姓名:
SELECT * FROM users WHERE name LIKE ‘__强’;
转义特殊字符
如果字段中本身包含 % 或 _,而你想精确匹配这些符号,就需要使用 ESCAPE 关键字定义转义字符。
例如,查找包含下划线“_”的实际文本:
SELECT * FROM files WHERE filename LIKE ‘%_%’ ESCAPE ”;
这里反斜杠 被定义为转义字符,_% 表示匹配的是字面意义上的下划线,而不是通配符。
大小写敏感性说明
MySQL 的 LIKE 查询是否区分大小写,取决于字段的排序规则(collation)。通常使用 utf8_general_ci 是不区分大小写的(ci = case insensitive)。
如果需要区分大小写,可使用 BINARY 关键字:
SELECT * FROM users WHERE name LIKE BINARY ‘John%’;
这样只会匹配大写 J 开头的 John,不会匹配 john 或 johnson 中的小写形式。
基本上就这些。LIKE 是日常开发中最常用的模糊查询手段,掌握 % 和 _ 的用法,再注意转义和大小写问题,就能应对大多数文本模糊搜索需求。实际使用时建议配合索引优化性能,尤其是前缀匹配(如 ‘abc%’)能有效利用索引,而 ‘%abc’ 类型则可能全表扫描,影响效率。