Cú pháp REPLACE() trong UPDATE
UPDATE bang SET cot = REPLACE(cot, 'gia_tri_cu', 'gia_tri_moi') WHERE dieu_kien;
Ví dụ: Thay 'Maxwell' thành 'Chris' chỉ cho bản ghi có tên Maxwell
Dữ liệu ban đầu
+----+------------------+ | Id | StudentFirstName | +----+------------------+ | 1 | Carol | | 2 | David | | 3 | Bob | | 4 | Sam | | 5 | Mike | | 6 | Maxwell | +----+------------------+
Truy vấn
mysql> UPDATE findAndReplaceDemo
-> SET StudentFirstName = REPLACE(StudentFirstName, 'Maxwell', 'Chris')
-> WHERE StudentFirstName = 'Maxwell';
Kết quả
+----+------------------+ | Id | StudentFirstName | +----+------------------+ | 1 | Carol | | 2 | David | | 3 | Bob | | 4 | Sam | | 5 | Mike | | 6 | Chris | +----+------------------+
Tại sao cần WHERE?
- Hiệu năng: Chỉ quét/update các dòng cần thiết
- An toàn: Tránh thay thế nhầm các giá trị chứa chuỗi con (ví dụ: 'Maxwellian' cũng bị thay)
- Tránh trigger chạy không cần thiết
REPLACE() vs REPLACE INTO
| REPLACE() function | REPLACE INTO statement |
|---|---|
| Thay chuỗi con trong cột | INSERT hoặc UPDATE toàn bộ dòng (theo PK/UK) |
| Dùng trong SELECT/UPDATE | Dùng thay cho INSERT |
Lưu ý: REPLACE() phân biệt chữ hoa/thường. Dùng LOWER() hoặc COLLATE nếu cần không phân biệt.