LIKE 用於模式匹配,支援兩個通配符:
%:匹配任意長度字串(含空字串)_:匹配單一字元| 模式 | 含義 | 範例匹配值 |
|---|---|---|
'f%' | 以 f 開頭 | foo, fox, f |
'%f' | 以 f 結尾 | barf, f |
'%f%' | 包含 f | foo, barf, f, faf |
'_f' | 第二字元為 f | af, bf |
'f_' | 第一字元 f,長度 2 | fa, fb |
-- 查詢 user 中間包含 'f' 的記錄
SELECT * FROM jtsr WHERE user LIKE '%f%';
+----+------+------+------+
| id | user | jtsr | sex |
+----+------+------+------+
| 4 | fff | 4000 | 男 |
+----+------+------+------+
LIKE 只有在不以通配符開頭時才能使用索引。
-- ✅ 可用索引(前綴固定)
SELECT id FROM user WHERE user LIKE 'h%';
-- ❌ 無法用索引(前導通配符)
SELECT id FROM user WHERE user LIKE '%in';
INDEX idx_name_prefix (name(10)),配合 LIKE 'prefix%' 查詢。FULLTEXT INDEX,配合 MATCH() AGAINST() 替代 LIKE '%keyword%'。reversed_name,查詢後綴時改用 LIKE 'reversed_prefix%'。-- 查詢包含字面 '%' 的字串
SELECT * FROM t WHERE col LIKE '%\%%' ESCAPE '\\';
自訂跳脫字元避免與通配符衝突。