萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL 字串查找與替換:REPLACE 函數完整用法指南

MySQL 內建 REPLACE(str, from_str, to_str) 函數可在字串中批量替換指定子字串,是資料清洗、敏感詞過濾、格式標準化的利器。本文系統整理語法、參數說明與實戰範例。

語法與參數

REPLACE(str, from_str, to_str)
  • str:目標字串(可為欄位名)。
  • from_str:欲被替換的子字串。
  • to_str:替換後的新字串。

回傳值:完成替換後的字串。若任一參數為 NULL,回傳 NULL。

核心應用場景與範例

1. 單欄位單次替換

UPDATE tb1 SET f1 = REPLACE(f1, 'abc', 'def');

將 f1 欄位中所有 abc 替換為 def。

2. 多層巢狀替換(批量清洗非法關鍵字)

UPDATE BBSTopic 
SET tcontents = REPLACE(REPLACE(tcontents, 'abc', ''), 'cde', '')
WHERE tcontents LIKE '%abc%' OR tcontents LIKE '%cde%';

先移除 abc,再移除 cde,WHERE 子句可大幅縮小掃描範圍,提升效能。

3. 跨表欄位值同步替換

UPDATE typetable 
SET type_description = REPLACE(type_description, '360', 'https://www.111cn.net');

4. 移除特定文字(如地址欄位中的「中國」)

UPDATE `table` SET address = REPLACE(address, '中國', '');

5. 搭配 LEFT() 依前綴條件更新其他欄位

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+)。
  • 替換後字串長度若超過欄位定義長度,會被截斷並產生警告。
copyright © 萬盛學電腦網 all rights reserved