%匹配任意长度字符,_匹配单个字符,ESCAPE用于转义特殊符号,结合LIKE实现模糊查询。

在MySQL中,通配符主要用于LIKE操作符配合进行模糊查询。表示任意字符的通配符主要有两个:“%”和“_”,它们有不同的用途。
% 表示任意数量的字符(包括零个字符)
“%”可以匹配任意长度的字符串,包括空字符串。
例如:- SELECT * FROM users WHERE name LIKE 'a%'; —— 匹配所有以“a”开头的名字,如“alice”、“andy”等。
- SELECT * FROM users WHERE name LIKE '%on%'; —— 匹配名字中包含“on”的记录,如“John”、“London”。
- SELECT * FROM users WHERE name LIKE '%'; —— 匹配所有非NULL的name值。
_ 表示单个任意字符
“_”只匹配一个字符,不能多也不能少。
- SELECT * FROM users WHERE name LIKE 'A_e'; —— 匹配像“Abe”、“Ade”这样的三字母名字,中间一个任意字符。
- SELECT * FROM users WHERE phone LIKE '138__00__00'; —— 匹配特定格式的手机号,其中“_”代表未知但确定为一位的数字。
使用ESCAPE自定义转义字符
如果要查找的字段本身包含“%”或“_”,就需要用ESCAPE指定转义字符。
例如:- SELECT * FROM products WHERE name LIKE '100\%' ESCAPE '\'; —— 查找名字为“100%”的产品。
- SELECT * FROM codes WHERE code LIKE 'A_B' ESCAPE '!'; 可写成 LIKE 'A!_B' ESCAPE '!' —— 匹配实际包含下划线的“A_B”。
基本上就这些。掌握“%”和“_”的用法,再结合ESCAPE处理特殊字符,就能灵活实现MySQL中的模糊匹配。注意LIKE对大小写是否敏感取决于字段的排序规则(collation),必要时可用LOWER()统一处理。不复杂但容易忽略细节。










