LIKE 模式匹配(不區分大小寫)
| 通配符 | 含義 | 範例 | 匹配結果 |
% | 任意長度字符(含 0) | name LIKE 'b%' | 以 b 開頭:Buffy, Bowser |
_ | 單個字符 | name LIKE '_____' | 長度 5:Claws, Buffy |
%...% | 包含子串 | name LIKE '%w%' | 含 w:Claws, Bowser, Whistler |
關鍵規則:必須用 LIKE/NOT LIKE,不能用 =/!=。
REGEXP 正則表達式(區分大小寫可用 BINARY)
常用元字符
.:任意單字符
[...]:字符集,如 [a-z]、[0-9]
*:前一字符 0 次或多次
^:行首錨點
$:行尾錨點
{n}:精確重複 n 次
LIKE → REGEXP 等價轉換
| LIKE 寫法 | REGEXP 寫法 | 說明 |
name LIKE 'b%' | name REGEXP '^b' | 以 b 開頭 |
name LIKE '%fy' | name REGEXP 'fy$' | 以 fy 結尾 |
name LIKE '%w%' | name REGEXP 'w' | 包含 w(REGEXP 默認部分配) |
name LIKE '_____' | name REGEXP '^.....$' 或 '^.{5}$' | 長度 5 |
進階技巧
-- 強制區分大小寫
SELECT * FROM pet WHERE name REGEXP BINARY '^b';
-- 字符類範圍
SELECT * FROM pet WHERE name REGEXP '^[a-z]'; -- 以小寫字母開頭
-- 多選一
SELECT * FROM pet WHERE name REGEXP '^(cat|dog|bird)$'; -- 精確匹配三種物種
性能與最佳實踐
- 前綴索引優化:
LIKE 'abc%' 可用索引;LIKE '%abc' 全表掃描
- REGEXP 不走索引:大表慎用,考慮全文索引或應用層過濾
CHAR/VARCHAR 字符集影響匹配:utf8mb4 下 . 匹配單字符而非字節
- 需精確匹配全值時,
LIKE 需 'abc',REGEXP 需 '^abc$'