Giới thiệu
Dùng UPDATE ... SET col = REPLACE(col, old_val, new_val) để thay thế tất cả lần xuất hiện của old_val trong cột.
Ví dụ minh họa
Tạo bảng và chèn dữ liệu
mysql> CREATE TABLE DemoTable (
FirstName VARCHAR(100), CountryName VARCHAR(100)
);
mysql> INSERT INTO DemoTable VALUES
('John', 'AUS'), ('Bob', 'AUS'), ('Chris', 'US'), ('David', 'UK'), ('Adam', 'US');
Xem dữ liệu trước
mysql> SELECT * FROM DemoTable;
+-----------+-------------+ | FirstName | CountryName | +-----------+-------------+ | John | AUS | | Bob | AUS | | Chris | US | | David | UK | | Adam | US | +-----------+-------------+
Thay AUS → US
mysql> UPDATE DemoTable SET CountryName = REPLACE(CountryName, 'AUS', 'US');
Query OK, 2 rows affected (0.17 sec)
Kết quả sau
mysql> SELECT * FROM DemoTable;
+-----------+-------------+ | FirstName | CountryName | +-----------+-------------+ | John | US | | Bob | US | | Chris | US | | David | UK | | Adam | US | +-----------+-------------+
Giải thích REPLACE
REPLACE(str, from_str, to_str): Thay **tất cả** lần xuất hiện củafrom_strtrongstrbằngto_str.- Phân biệt chữ hoa/thường.
- Nếu
from_strrỗng → trả vềstrgốc.
⚠️ Cảnh báo
- Thay thế một phần từ: REPLACE('Australia', 'AUS', 'US') → 'Ustralia' (sai!).
- Khuyến nghị:
WHERE CountryName = 'AUS'để chính xác khớp toàn bộ giá trị:UPDATE DemoTable SET CountryName = 'US' WHERE CountryName = 'AUS';
- Backup trước khi UPDATE production.
Chỉ SELECT không UPDATE
SELECT FirstName, REPLACE(CountryName, 'AUS', 'US') AS NewCountry FROM DemoTable;