LIKE 里的通配符陷阱要点
- % 匹配任意长度,_ 匹配单个字符,都是 LIKE 的元字符
- 用户搜 '30%' 本意是百分之三十,却被当通配乱匹配
- 用户搜 'abc_' 会意外命中 'abcd' 'abce' 等
- 防范:对用户输入里的 % 和 _ 单独转义
- 用 ESCAPE 子句指定转义符,把元字符变普通字符
- 转义后再拼进 LIKE,用户输入才真的是字面量
LIKE 里的通配符陷阱示例
-- 用户想搜 "30%" 这个字面量,却会被当成通配
SELECT * FROM voucher WHERE code LIKE '%30%%';
-- 正确做法:把 % 和 _ 转义成普通字符
SELECT * FROM voucher WHERE code LIKE '\%30\%' ESCAPE '\';
避坑提醒:LIKE 注入常被忽略:搜索框里输入 % 就能匹配全表,既慢又泄数据;进 LIKE 前必须把 % 和 _ 转义掉。