| 特性 | SQL 標準模式 (LIKE) | 擴展正則表達式 (REGEXP) |
|---|---|---|
| 操作符 | LIKE / NOT LIKE | REGEXP / NOT REGEXP (RLIKE) |
| 大小寫敏感 | 預設不敏感 | 敏感 |
| 比對範圍 | 必須匹配整個值 | 值中任意位置匹配即可 |
| 萬用字元 | _ (單字元), % (任意字元) | . (單字元), * (零或多), + (一或多), ? (零或一) |
| 字元類別 | 不支援 | [abc], [a-z], [0-9] |
| 錨點 | 無 | ^ (開頭), $ (結尾) |
| 分組/選擇 | 無 | (...), | |
| 量詞 | 無 | {n}, {n,}, {n,m} |
-- 以 b 開頭
SELECT * FROM pet WHERE name LIKE 'b%';
-- 以 fy 結尾
SELECT * FROM pet WHERE name LIKE '%fy';
-- 包含 w
SELECT * FROM pet WHERE name LIKE '%w%';
-- 正好 5 個字元
SELECT * FROM pet WHERE name LIKE '_____';
若需大小寫敏感:LIKE BINARY 'b%' 或 COLLATE utf8_bin。
-- 以 b 或 B 開頭
SELECT * FROM pet WHERE name REGEXP '^[bB]';
-- 以 fy 結尾
SELECT * FROM pet WHERE name REGEXP 'fy$';
-- 包含 w 或 W
SELECT * FROM pet WHERE name REGEXP '[wW]';
-- 正好 5 個字元
SELECT * FROM pet WHERE name REGEXP '^.....$';
-- 或使用量詞
SELECT * FROM pet WHERE name REGEXP '^.{5}$';
[a-zA-Z0-9]、[[:alnum:]]、[[:space:]] 等 POSIX 類別。(ab)+、\\1。[[:<:]](字首)、[[:>:]](字尾)。^abc),大表慎用;優先考慮 LIKE + 全文索引或應用層處理。% 開頭(%abc)無法使用索引,導致全表掃描。[aA] 處理不敏感比對。REPLACE()、TRIM()、REGEXP 於 UPDATE 中批次修正。LIKE 簡單高效、支援索引(固定前綴),適合前綴/後綴/包含查詢;REGEXP 功能強大、語法豐富,適合複雜格式驗證、資料清洗。根據場景選擇正確工具,並注意效能影響,是 SQL 開發的基本功。