| 符號 | 含義 | 範例 | 匹配結果 |
|---|---|---|---|
% | 任意長度字串(含 0 字元) | 'a%' | 以 a 開頭 |
_ | 單一字元 | 'a_' | a 開頭的兩字元字串 |
\% | 字面 % | '100\%' | 字串 '100%' |
\_ | 字面 _ | 'a\_b' | 字串 'a_b' |
MySQL 預設排序規則(如 `utf8_general_ci`)下,`LIKE` 不區分大小寫。需區分大小寫請用 COLLATE utf8_bin 或 BINARY 關鍵字:
SELECT * FROM t WHERE name LIKE 'abc' COLLATE utf8_bin;
SELECT * FROM t WHERE name LIKE BINARY 'abc';
-- 1. 以 M 開頭
SELECT * FROM student WHERE name LIKE 'm%';
-- 2. 以 e 結尾
SELECT * FROM student WHERE name LIKE '%e';
-- 3. 任意位置包含 a
SELECT * FROM student WHERE name LIKE '%a%';
-- 4. 固定長度 5 字元
SELECT * FROM student WHERE name LIKE '_____';
-- 5. 排除包含 test 的記錄
SELECT * FROM student WHERE name NOT LIKE '%test%';
LIKE 'keyword%'(前綴匹配)可使用索引。LIKE '%keyword' 或 LIKE '%keyword%' 會導致全表掃描,大表慎用。SELECT * FROM student WHERE name REGEXP '^[aeiou]'; -- 以母音開頭
SELECT * FROM student WHERE name REGEXP '[0-9]'; -- 含數字
功能更強但通常較慢,視情況使用。