資料清洗與遷移時,常需對欄位內容做局部替換、去除雜訊或格式標準化。本文蒐集多種 UPDATE ... REPLACE、TRIM、CONCAT 組合技巧,涵蓋關鍵字替換、空白清理、特殊字元移除、日期格式統一等高頻場景,可直接套用至生產環境。
UPDATE `table_name` SET `col` = REPLACE(`col`, '舊字串', '新字串') WHERE INSTR(`col`, '舊字串') > 0;
-- 將私訊主旨中的 "Welcome to" 改為 "歡迎光臨" UPDATE `cdb_pms` SET `subject` = REPLACE(`subject`, 'Welcome to', '歡迎光臨') WHERE INSTR(`subject`, 'Welcome to') > 0;
-- 修正貼文中的主題連結 tid UPDATE `cdb_posts` SET `message` = REPLACE(`message`, 'viewthread.php?tid=3989', 'viewthread.php?tid=16546') WHERE INSTR(`message`, 'viewthread.php?tid=3989') > 0;
UPDATE `es_product` SET `pro_pub_time` = TRIM(`pro_pub_time`);
UPDATE `es_product` SET `pro_pub_time` = REPLACE(`pro_pub_time`, '[', '') WHERE INSTR(`pro_pub_time`, '[') > 0; UPDATE `es_product` SET `pro_pub_time` = REPLACE(`pro_pub_time`, ']', '') WHERE INSTR(`pro_pub_time`, ']') > 0; UPDATE `es_product` SET `pro_pub_time` = REPLACE(`pro_pub_time`, '.', '-') WHERE INSTR(`pro_pub_time`, '.') > 0;
UPDATE `es_product` SET `pro_pub_time` = REPLACE(`pro_pub_time`, '-', '-') WHERE INSTR(`pro_pub_time`, '-') > 0;
UPDATE `es_product` SET `pro_pub_time` = REPLACE(`pro_pub_time`, '年', '-') WHERE INSTR(`pro_pub_time`, '年') > 0; UPDATE `es_product` SET `pro_pub_time` = REPLACE(`pro_pub_time`, '月', '-') WHERE INSTR(`pro_pub_time`, '月') > 0;
UPDATE `es_product` SET `pro_pub_time` = CONCAT(`pro_pub_time`, '01') WHERE SUBSTRING_INDEX(`pro_pub_time`, '-', -1) = '' AND LENGTH(`pro_pub_time`) > 0 AND LENGTH(`pro_pub_time`) > 5;
UPDATE `es_product` SET `pro_pub_time` = DATE_FORMAT(`pro_pub_time`, '%Y年%m月') WHERE INSTR(`pro_pub_time`, '-') > 0;
SET 換成 SELECT 確認影響筆數與結果。善用這些模板,能大幅降低人工清洗成本,確保資料一致性與可用性。