萬盛學電腦網

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

MySQL 字串替換實戰:REPLACE() 函數批量更新與 REPLACE INTO 語法詳解

REPLACE() 函數:欄位內容批量字串替換

UPDATE table_name
SET column_name = REPLACE(column_name, 'old_string', 'new_string')
[WHERE condition];

經典應用場景

  • 清理 HTML 實體:UPDATE qlj_joke SET content = REPLACE(content, ' ', '');
  • 網站遷移域名替換:UPDATE wp_posts SET post_content = REPLACE(post_content, 'old.com', 'new.com');
  • 評論內容關鍵字替換:UPDATE wp_comments SET comment_content = REPLACE(comment_content, 'PJBlog', 'WordPress');
  • 條件式前後綴拼接:UPDATE backupfile SET logical_name = CONCAT('tmp', logical_name, ' end') WHERE file_number = 1;

REPLACE INTO:插入或更新(Upsert)

語法:REPLACE INTO tbl (cols) VALUES (...);

行為:

  1. 嘗試插入新行
  2. 若主鍵或唯一鍵衝突 → 刪除舊行 → 插入新行
  3. 受影響行數:1 (新增) 或 2 (刪除舊+插入新)

範例

REPLACE INTO fanwe_order (id, sn) VALUES (33, '測試replace into 使用');
-- 受影響行數:2 (原有 id=33 被刪除,新行插入)

SELECT * FROM fanwe_order WHERE sn = '測試replace into 使用';
-- 僅返回 1 行新記錄

對比:INSERT ... ON DUPLICATE KEY UPDATE

特性REPLACE INTOINSERT ... ON DUPLICATE KEY UPDATE
衝突處理刪除舊行 + 插入新行更新指定欄位
自增 ID可能改變(舊行刪除)保持不變
外鍵關聯可能觸發級聯刪除安全,無刪除動作
效能較低(刪除+插入)較高(就地更新)
適用場景需完全替換整行、無外鍵依賴部分欄位更新、保留自增 ID、有外鍵

注意事項

  • REPLACE() 函數區分大小寫,若需不區分大小寫替換,可用 REPLACE(LOWER(col), LOWER('old'), 'new') 但會改變原大小寫。
  • 大量更新建議分批處理,避免長鎖表:WHERE id BETWEEN ... AND ... 循環執行。
  • REPLACE INTO 需要表有主鍵或唯一索引,否則退化為單純 INSERT。
copyright © 萬盛學電腦網 all rights reserved