在 MySQL 中,LIKE 操作符用于在 WHERE 子句中进行模糊匹配查询。它通常与通配符配合使用,用来查找符合某种模式的字符串数据。
1. 通配符的使用
MySQL 支持两种主要的通配符:
%:匹配任意数量的字符(包括零个字符) _:匹配单个字符例如:
LIKE 'a%':查找以 "a" 开头的字符串
LIKE '%abc':查找以 "abc" 结尾的字符串
LIKE '%mysql%':查找包含 "mysql" 的字符串
LIKE 'a_b':匹配像 "aab"、"acb" 这样中间一个任意字符的三字母字符串
2. 基本语法示例
假设有一个用户表 users,结构如下:
id | name | email ---|----------|------------------ 1 | Alice | alice@example.com 2 | Bob | bob@test.com 3 | Charlie | charlie@demo.com
执行以下查询:
查找名字包含 "li" 的用户:SELECT * FROM users WHERE name LIKE '%li%';
返回 Alice 和 Charlie。 查找邮箱以 "@example" 结尾的记录:
SELECT * FROM users WHERE email LIKE '%@example.com';
返回 Alice 的记录。 查找名字第二个字母是 "o" 的用户:
SELECT * FROM users WHERE name LIKE '_o%';
返回 Bob。
3. 大小写敏感性说明
在大多数默认配置下,MySQL 的 LIKE 查询是不区分大小写的,前提是字段使用的是不区分大小写的排序规则(如
utf8_general_ci)。
如果需要区分大小写,可以使用 BINARY 关键字:
SELECT * FROM users WHERE name LIKE BINARY 'Alice';—— 区分大小写匹配
SELECT * FROM users WHERE name LIKE BINARY 'alice';—— 不会匹配 "Alice"
4. 转义特殊字符
如果要查找的字符串本身包含 % 或 _,需要使用 ESCAPE 关键字指定转义字符。
查找名字中包含下划线 "_" 的记录:SELECT * FROM users WHERE name LIKE '%\_%' ESCAPE '\';也可以自定义转义字符,比如:
SELECT * FROM users WHERE name LIKE '%!%%' ESCAPE '!';—— 查找包含 "%" 的名字
基本上就这些。LIKE 查询简单实用,但注意在大表上对无索引字段使用前导通配符(如
LIKE '%abc')会导致全表扫描,影响性能。
