萬盛學電腦網

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

MySQL 字串前綴/後綴批量拼接與替換:CONCAT 與 REPLACE 實戰模板

業務常需對字段批量加前綴(如商品名統一加「新中式」)、加後綴、或全量替換特定子串。MySQL CONCAT() 拼接、REPLACE() 全量替換、SUBSTRING()/RIGHT()/LEFT() 截取,組合即可覆蓋 99% 字串重寫場景。本文給出生產級 SQL 模板與避坑指南。

核心函數速查

函數語法說明
CONCATCONCAT(str1, str2, ...)拼接,任一參數為 NULL 結果為 NULL(用 CONCAT_WS 或 IFNULL 規避)
REPLACEREPLACE(str, from_str, to_str)將 str 中**所有** from_str 替換為 to_str,區分大小寫取決於排序規則
SUBSTRINGSUBSTRING(str, pos, len)1-based 位置截取
LEFT/RIGHTLEFT(str, len) / RIGHT(str, len)左/右側定長截取
LENGTH/CHAR_LENGTHLENGTH(str) 字節長 / CHAR_LENGTH(str) 字符長多字節字符集必分清

三大標準化更新模板

1. 加前綴

UPDATE `table_name`
SET `col_name` = CONCAT('prefix_', `col_name`)
WHERE `condition_col` = 'target_value';

實例: UPDATE ecs_goods SET goods_name = CONCAT('新中式', goods_name) WHERE cat_id = 4;

2. 加後綴

UPDATE `table_name`
SET `col_name` = CONCAT(`col_name`, '_suffix')
WHERE `condition_col` = 'target_value';

實例: UPDATE ecs_goods SET goods_name = CONCAT(goods_name, '新中式') WHERE cat_id = 4;

3. 批量替換子串

UPDATE `table_name`
SET `col_name` = REPLACE(`col_name`, 'old_substr', 'new_substr')
WHERE `col_name` LIKE '%old_substr%';  -- 可選 WHERE 減少無意義更新

進階場景:刪除前 N 字符 / 保留後 N 字符

-- 刪除首字符(如去掉首個分隔符)
UPDATE `table` SET `col` = SUBSTRING(`col`, 2) WHERE `col` LIKE '/%';

-- 刪除前 N 字符
UPDATE `table` SET `col` = SUBSTRING(`col`, N+1);

-- 保留後 N 字符
UPDATE `table` SET `col` = RIGHT(`col`, N);

生產環境執行清單

  1. 備份先行: mysqldump -d -t table_name > backup.sql(僅結構)或全量備份。
  2. 小樣本驗證: SELECT col, CONCAT('prefix', col) AS new_col FROM table WHERE ... LIMIT 10; 確認結果符合預期。
  3. 加 WHERE 過濾: 僅更新目標行,避免全表鎖定、Binlog 膨脹、主從延遲。
  4. 分批提交: 大表(>10 萬行)按主鍵範圍分批 WHERE id BETWEEN x AND y,每批 LIMIT 5000,間隔 SLEEP(1)。
  5. 事務包裹: START TRANSACTION; ... COMMIT; 確保原子性,必要時 ROLLBACK。
  6. 驗證後清理: 對比更新前後行數、抽樣核對內容。

常見陷阱

  • CONCAT 遇 NULL 全變 NULL → 用 CONCAT('prefix', IFNULL(col,'')) 或 CONCAT_WS('', 'prefix', col)。
  • REPLACE 替換所有匹配,若只想替首次出現 → 需用 INSERT(str, LOCATE(substr,str), CHAR_LENGTH(substr), new_str)。
  • 字符集不一致導致亂碼 → 確保連接、表、列字符集統一 utf8mb4。
  • 觸發器/外鍵/生成列干擾 → 暫時禁用或評估級聯影響。

字串批量重寫看似簡單,實則考驗「備份、驗證、分批、可回滾」的工程化素養。收藏上述模板,按清單執行,讓每一次 UPDATE 都穩如磐石。

copyright © 萬盛學電腦網 all rights reserved