| 通配符 | 匹配規則 | 範例 |
|---|---|---|
% | 任意長度字串(含 0 字元) | 'abc' LIKE 'a%' → True |
_ | 單一字元 | 'abc' LIKE 'a_c' → True |
[abc] | 字元集合(MySQL 不支援,SQL Server 才有) | — |
[^abc] | 排除集合(MySQL 不支援) | — |
注意:MySQL LIKE 僅支援 % 與 _,字元類別需用 REGEXP。
-- 查找產品名含 # 號的記錄
SELECT products_name
FROM nike.products_description
WHERE products_name LIKE '%#%';
UPDATE article
SET content = REPLACE(content, 'sjolzy', 'sjolzy.cn')
WHERE name LIKE '%#%';
REPLACE(str, from_str, to_str):將 str 中所有 from_str 替換為 to_str,區分大小寫。REPLACE(LOWER(str), LOWER(from_str), to_str)(會改變原大小寫)。-- 僅替換獨立單詞 'old'(邊界為非字母數字)
UPDATE article
SET content = REGEXP_REPLACE(content, '[[:<:]]old[[:>:]]', 'new')
WHERE content REGEXP '[[:<:]]old[[:>:]]'; -- MySQL 8.0+
LIKE '%xxx%' 導致全表掃描,大表建議全文索引或 Elasticsearch。REPLACE 在 WHERE 中同樣不走索引,批量更新建議分批 LIMIT 1000 循環執行,避免長鎖表。SELECT 確認影響範圍,生產環境務必備份。