通配符用于MySQL中字符串的模糊匹配,主要配合LIKE或NOT LIKE使用。%代表任意数量字符(含零个),如'张%'匹配以“张”开头的姓名;'\_\_'匹配两个字的名称;需查找%或\_时用ESCAPE指定转义符,如'%\%%' ESCAPE '\';NOT LIKE可排除特定模式,如'name NOT LIKE 测试%'。注意避免以%开头的模糊查询以防索引失效。

在MySQL中,通配符主要用于字符串的模糊匹配,通常与LIKE或NOT LIKE操作符一起出现在WHERE子句中。通过使用通配符,可以灵活地查询包含特定模式的数据,适用于搜索、筛选等场景。
百分号通配符(%):匹配任意字符序列
% 表示任意数量的字符(包括零个字符)。常用于匹配字符串开头、结尾或中间的部分内容。
- 查找以“张”开头的所有姓名:
SELECT * FROM users WHERE name LIKE '张%'; - 查找包含“科技”的公司名称:
SELECT * FROM companies WHERE company_name LIKE '%科技%'; - 查找以“.com”结尾的邮箱:
SELECT * FROM users WHERE email LIKE '%.com';
下划线通配符(_):匹配单个字符
_ 代表一个任意字符,常用于固定长度的模式匹配。
- 查找名字为两个字的用户:
SELECT * FROM users WHERE name LIKE '__'; - 查找第三个字母是“a”的单词:
SELECT * FROM words WHERE word LIKE '__a%'; - 匹配电话号码中第4位为“8”的记录(假设号码为8位数字):
SELECT * FROM contacts WHERE phone LIKE '___8____';
转义特殊字符:使用ESCAPE关键字
当需要查找的内容本身包含%或_时,应使用ESCAPE指定转义字符,避免被当作通配符处理。
- 查找名称中包含百分号的记录:
SELECT * FROM products WHERE description LIKE '%\%%' ESCAPE '\'; - 查找包含下划线的文件名:
SELECT * FROM files WHERE filename LIKE '%\_%' ESCAPE '\';
结合NOT LIKE实现反向筛选
使用NOT LIKE可排除符合某种模式的记录,增强查询灵活性。
- 排除所有以“测试”开头的用户名:
SELECT * FROM users WHERE name NOT LIKE '测试%'; - 查找不包含数字的编码:
SELECT * FROM codes WHERE code NOT LIKE '%[0-9]%';(注意:MySQL不支持正则中的[0-9]写法,需用REGEXP实现更复杂逻辑)
基本上就这些。合理使用通配符能显著提升数据检索效率,但要注意避免在大字段或高频查询中过度使用,尤其是以%开头的模式(如'%abc'),因为它无法有效利用索引,可能导致性能下降。










