MySQL 內建 REPLACE(str, from_str, to_str) 函數可在字串中批量替換指定子字串,是資料清洗、敏感詞過濾、格式標準化的利器。本文系統整理語法、參數說明與實戰範例。
REPLACE(str, from_str, to_str)
回傳值:完成替換後的字串。若任一參數為 NULL,回傳 NULL。
UPDATE tb1 SET f1 = REPLACE(f1, 'abc', 'def');
將 f1 欄位中所有 abc 替換為 def。
UPDATE BBSTopic
SET tcontents = REPLACE(REPLACE(tcontents, 'abc', ''), 'cde', '')
WHERE tcontents LIKE '%abc%' OR tcontents LIKE '%cde%';
先移除 abc,再移除 cde,WHERE 子句可大幅縮小掃描範圍,提升效能。
UPDATE typetable
SET type_description = REPLACE(type_description, '360', 'https://www.111cn.net');
UPDATE `table` SET address = REPLACE(address, '中國', '');
UPDATE `table`
SET province_id = 11
WHERE LEFT(address, 2) = '福建';
LEFT(str, len) 取字串左側 len 個字元,此處判斷地址前兩字是否為「福建」,符合則將 province_id 設為 11(假設省份表中福建 ID 為 11)。
WHERE 條件過濾,避免全表掃描。REPLACE 區分大小寫;需不區分大小寫時,可搭配 LOWER()/UPPER() 或使用 REGEXP_REPLACE(MySQL 8.0+)。