《MySQL必知必會》第八章:LIKE 通配符過濾實戰與性能避坑
掌握 LIKE 通配符 % _ 用法、大小寫敏感、尾空格陷阱、NULL 特性,以及性能優化三大鐵律。
通配符速查
| 通配符 | 匹配 | 示例 |
% | 任意長度字符(含 0 個) | 'jet%' 匹配 jet, jets, jetpack |
_ | 單個字符 | '_et' 匹配 jet, pet, set |
三大性能鐵律
- 能不用通配符就不用: 精確匹配、
IN、BETWEEN、= 皆可走索引,LIKE '%...%' 導致全表掃描。
- 避免前置通配符:
LIKE '%keyword' 無法利用索引,最慢**。若業務必須前置模糊,考慮全文索引或搜索引擎。
- 精準控制通配符位置: 錯位導致結果偏差或全掃。
常見陷阱
| 陷阱 | 現象 | 對策 |
| 大小寫敏感 | 依 collation:_ci 不敏感,_cs / _bin 敏感 | 明確指定 COLLATE 或用 LOWER/UPPER 統一 |
| 尾空格干擾 | 'abc ' 不匹配 'abc%'(視版本/模式) | 存入前 TRIM(),查詢前 TRIM() |
| NULL 不匹配 | WHERE col LIKE '%' 也匹配不了 NULL | 額外加 OR col IS NULL 或用 COALESCE |
實戰範例