-- 找出包含特定字串的記錄
SELECT products_name
FROM nike.products_description
WHERE products_name LIKE '%#%'; -- # 為目標字串
-- 統計影響範圍
SELECT COUNT(*) FROM nike.products_description
WHERE products_name LIKE '%#%';
UPDATE article
SET content = REPLACE(content, 'sjolzy', '111cn.net')
WHERE content LIKE '%sjolzy%';
| 元素 | 說明 |
|---|---|
| table_name | 目標表名 |
| column_name | 目標欄位名 |
| from_str | 被替換的子字串 (區分大小寫) |
| to_str | 替換後的字串 |
| WHERE 條件 | **必加**,限制掃描範圍,避免全表鎖定 |
UPDATE products
SET
name = REPLACE(name, 'old_brand', 'new_brand'),
description = REPLACE(description, 'old_brand', 'new_brand')
WHERE name LIKE '%old_brand%' OR description LIKE '%old_brand%';
UPDATE target_table t
JOIN source_table s ON t.id = s.ref_id
SET t.column = REPLACE(t.column, s.old_val, s.new_val)
WHERE t.column LIKE CONCAT('%', s.old_val, '%');
-- 將所有數字替換為 [NUM]
UPDATE articles SET content = REGEXP_REPLACE(content, '[0-9]+', '[NUM]');
mysqldump -t db table > backup_table.sql
-- 分批模板
REPEAT
UPDATE large_table
SET col = REPLACE(col, 'old', 'new')
WHERE col LIKE '%old%'
LIMIT 1000;
UNTIL ROW_COUNT() = 0 END REPEAT;
SHOW ENGINE INNODB STATUS\G 觀察 LOCK WAITSELECT COUNT(*) FROM table WHERE col LIKE '%new%'鐵律: 無 WHERE 條件的 UPDATE REPLACE = 生產事故。永遠先 SELECT 驗證影響行數,再分批 UPDATE,事後 ANALYZE TABLE 更新統計資訊。