首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 同一列批量替換字符串:將 .wmv 統一修改為 .flv 的實戰技巧

     編輯:MySQL 綜合教學

場景

表 video_info 中 file_path 列存儲路徑如 /video/lesson1.wmv,需批量將後綴 .wmv 替換為 .flv。

方案:兩步走(截取 + 拼接)

MySQL 無原生 REPLACE_SUFFIX 函數,利用 SUBSTRING + LENGTH 定位,再 CONCAT 拼接新後綴。

-- 步驟 1:截去最後 3 個字符 ('.wmv' 長度為 4,但需保留 '.' 或直接截去 4 位)
-- 假設統一為 4 字符後綴 '.wmv'
UPDATE video_info 
SET file_path = SUBSTRING(file_path, 1, LENGTH(file_path) - 4);

-- 步驟 2:拼接新後綴 '.flv'
UPDATE video_info 
SET file_path = CONCAT(file_path, '.flv');

進階:單條 SQL 完成 (MySQL 8.0+ / MariaDB 10.2+)

UPDATE video_info 
SET file_path = CONCAT(SUBSTRING(file_path, 1, LENGTH(file_path) - 4), '.flv')
WHERE file_path LIKE '%.wmv';

通用替換函數:REPLACE()

若需替換列中**任意位置**的子串,直接使用 REPLACE(str, from_str, to_str):

-- 將所有路徑中的 'old_domain.com' 替換為 'new_domain.com'
UPDATE video_info 
SET file_path = REPLACE(file_path, 'old_domain.com', 'new_domain.com');

正則替換 (MySQL 8.0+)

-- 僅替換以 .wmv 結尾的
UPDATE video_info 
SET file_path = REGEXP_REPLACE(file_path, '\\.wmv$', '.flv')
WHERE file_path REGEXP '\\.wmv$';

執行前必備檢查

  1. 備份數據:CREATE TABLE video_info_bak AS SELECT * FROM video_info;
  2. 預覽影響行數:SELECT COUNT(*) FROM video_info WHERE file_path LIKE '%.wmv';
  3. 驗證樣本:SELECT file_path, CONCAT(SUBSTRING(file_path, 1, LENGTH(file_path) - 4), '.flv') AS new_path FROM video_info WHERE file_path LIKE '%.wmv' LIMIT 10;
  4. 事務包裹:生產環境建議 START TRANSACTION; ... COMMIT; 或 ROLLBACK;。

總結

  • 固定後綴替換:SUBSTRING + LENGTH + CONCAT 最兼容、高效。
  • 任意位置替換:REPLACE() 簡潔有力。
  • 複雜模式替換:MySQL 8.0 REGEXP_REPLACE() 強大靈活。
  • **永遠先備份、再預覽、後執行。**
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved