最簡單場景:將符合條件的行某字段統一設為固定值。
UPDATE `table_A` SET is_checked = 1 WHERE cityid = 93;
執行結果:影響列數:214 (查詢花費 0.0833 秒)
當字段值中僅部分需替換(如清洗 HTML 實體字符):
UPDATE `table_name`
SET `column_B` = REPLACE(`column_B`, '">', '')
WHERE `column_B` LIKE '%">%';
SELECT * FROM table_A WHERE column_B LIKE '%">%' → 返回 241 行old_str 為空串,MySQL 8.0 報錯,5.7 返回原值-- 1. 開啟事務
START TRANSACTION;
-- 2. 預估影響行數
SELECT COUNT(*) FROM `table` WHERE `col` LIKE '%target%';
-- 3. 執行替換(帶 LIMIT 防失控)
UPDATE `table` SET `col` = REPLACE(`col`, 'target', 'replacement')
WHERE `col` LIKE '%target%' LIMIT 10000;
-- 4. 核對 ROW_COUNT()
-- 5. 提交或回滾
COMMIT;
WHERE id BETWEEN 1 AND 10000 AND col LIKE ...pt-online-schema-change 思路構建影子表SQL 字符串中單引號需轉義:'it\'s' 或雙引號包裹 "it's"。涉及反斜杠、百分號、下劃線等通配符時,REPLACE 參數按字面匹配,無需額外轉義,但 LIKE 條件中需轉義:LIKE '%\\_%' ESCAPE '\\'。
UPDATE ... SET col = REPLACE(col, 'old', 'new') WHERE ... 是 MySQL 字符串批量清洗的核心手法。遵循先查後改、事務包裹、分批執行、索引加速四步法,可安全高效處理從幾百行到億級數據的替換任務。