MySQL常用通配符有%和_,%匹配任意数量字符,_匹配单个字符,需与LIKE或NOT LIKE配合使用;可通过ESCAPE指定转义字符来查找含%或_的字符串,如’%/_%’ ESCAPE ‘/’;注意避免前导通配符导致全表扫描,应结合索引优化性能。

在MySQL中,通配符主要用于LIKE操作符配合模糊查询,帮助我们匹配符合特定模式的字符串。掌握通配符的使用,可以更灵活地进行数据检索。
常用的MySQL通配符有哪些?
MySQL支持两种主要的通配符:
- %:匹配任意数量的字符(包括零个字符)
- _(下划线):匹配任意单个字符
这两个通配符必须与LIKE或NOT LIKE一起使用。
如何使用%通配符进行模糊匹配?
%可以代替多个字符,适合用于查找包含、开头或结尾为某字符串的数据。
例如:
- SELECT * FROM users WHERE name LIKE ‘张%’; —— 查找所有姓“张”的用户
- SELECT * FROM users WHERE email LIKE ‘%@gmail.com’; —— 查找Gmail邮箱用户
- SELECT * FROM products WHERE title LIKE ‘%手机%’; —— 查找标题包含“手机”的商品
如何使用_通配符匹配单个字符?
_只能匹配一个字符,适用于已知长度或固定格式的场景。
例如:
- SELECT * FROM users WHERE phone LIKE ‘138______’; —— 匹配以138开头的7位手机号(共11位)
- SELECT * FROM codes WHERE code LIKE ‘A_B’; —— 匹配A开头、B结尾、中间一个任意字符的三字母编码,如A2B、AXB等
如何转义特殊通配符?
如果要查找的字符串本身包含%或_,需要使用ESCAPE关键字指定转义字符。
例如,查找用户名包含下划线的记录:
SELECT * FROM users WHERE name LIKE ‘%/_%’ ESCAPE ‘/’;
这里反斜杠/被定义为转义字符,/_表示匹配实际的下划线字符,而不是通配符。
同理,查找包含%号的数据:
SELECT * FROM comments WHERE content LIKE ‘%50/%%’ ESCAPE ‘/’;
基本上就这些。合理使用%和_通配符,能大幅提升查询灵活性。注意性能问题——在大表上使用前导通配符(如%abc)可能导致全表扫描,建议结合索引优化。不复杂但容易忽略。
