Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Thay thế giá trị cụ thể trong cột MySQL với REPLACE + UPDATE


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ủa from_str trong str bằng to_str.
  • Phân biệt chữ hoa/thường.
  • Nếu from_str rỗng → trả về str gố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;