表 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');
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');
-- 僅替換以 .wmv 結尾的 UPDATE video_info SET file_path = REGEXP_REPLACE(file_path, '\\.wmv$', '.flv') WHERE file_path REGEXP '\\.wmv$';
CREATE TABLE video_info_bak AS SELECT * FROM video_info;SELECT COUNT(*) FROM video_info WHERE file_path LIKE '%.wmv';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;START TRANSACTION; ... COMMIT; 或 ROLLBACK;。SUBSTRING + LENGTH + CONCAT 最兼容、高效。REPLACE() 簡潔有力。REGEXP_REPLACE() 強大靈活。