首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL REPLACE 函數實戰:字串替換更新資料的正確姿勢

     編輯:MySQL 資料庫相關知識

語法

REPLACE(str, from_str, to_str)
-- 回傳將 str 中所有 from_str 替換為 to_str 後的字串

實戰範例:批次更新設定值

UPDATE users_settings
SET ConfigValue = REPLACE(ConfigValue, 'fromstr', 'tostr')
WHERE ConfigName = 'Accesslist';

將 ConfigName='Accesslist' 的記錄中,ConfigValue 所有 fromstr 替換為 tostr。

進階用法組合

1. 結合 TRIM 清理前後空白

UPDATE products
SET description = REPLACE(TRIM(description), '  ', ' ');
-- 先去首尾空白,再將雙空白縮為單空白

2. 巢狀 REPLACE 多重替換

UPDATE articles
SET content = REPLACE(REPLACE(REPLACE(content, '<', '&lt;'), '>', '&gt;'), '"', '&quot;');
-- HTML 特殊字元轉義

3. 條件式替換(CASE WHEN)

UPDATE users
SET phone = CASE
    WHEN phone LIKE '09%' THEN REPLACE(phone, '09', '+8869')
    WHEN phone LIKE '02%' THEN REPLACE(phone, '02', '+8862')
    ELSE phone
END;
-- 手機/市話號碼轉國際格式

效能與注意事項

  • REPLACE 會掃描整個字串,大欄位(TEXT、長 VARCHAR)大量更新時較慢。
  • 若需正則表達式替換,MySQL 8.0+ 可用 REGEXP_REPLACE()。
  • 更新前先 SELECT 驗證影響範圍:SELECT id, ConfigValue, REPLACE(ConfigValue, 'fromstr', 'tostr') FROM users_settings WHERE ConfigName='Accesslist';
  • 交易包裹大量更新:START TRANSACTION; ... UPDATE ...; COMMIT; 可原子回滾。

對比:REPLACE() vs REPLACE INTO

功能REPLACE(str, from, to)REPLACE INTO table ...
類型字串函數DML 語句
用途字串內容替換插入或更新整列(主鍵/唯一鍵衝突則刪除舊列再插入新列)
範例SELECT REPLACE('abc', 'a', 'x') → 'xbc'REPLACE INTO users (id, name) VALUES (1, 'new')

切勿混淆兩者!

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved