Tìm và thay thế chuỗi trong cột MySQL với REPLACE()
Hàm REPLACE() cho phép tìm tất cả lần xuất hiện của một chuỗi con và thay thế bằng chuỗi khác ngay trong câu lệnh UPDATE.
Cú pháp
UPDATE yourTableName SET yourColumnName = REPLACE(yourColumnName, 'oldValue', 'newValue');
Ví dụ: Thay đổi đường dẫn thư mục
Tạo bảng:
mysql> CREATE TABLE FindReplaceDemo (
-> FileId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> FileDirectory TEXT
-> );
Chèn dữ liệu:
mysql> INSERT INTO FindReplaceDemo(FileDirectory) VALUES
('C://User//MySQL'),
('D://WebsiteImage//image1.jpg'),
('E://Java//AdvancedJava');
Dữ liệu ban đầu:
+--------+------------------------------+ | FileId | FileDirectory | +--------+------------------------------+ | 1 | C://User//MySQL | | 2 | D://WebsiteImage//image1.jpg | | 3 | E://Java//AdvancedJava | +--------+------------------------------+
Thay thế đường dẫn Java:
mysql> UPDATE FindReplaceDemo SET FileDirectory = REPLACE(FileDirectory, 'E://Java//AdvancedJava', 'E://Java//SpringAndHibernateFramework'); Query OK, 1 row affected (0.12 sec)
Kết quả:
+--------+---------------------------------------+ | FileId | FileDirectory | +--------+---------------------------------------+ | 1 | C://User//MySQL | | 2 | D://WebsiteImage//image1.jpg | | 3 | E://Java//SpringAndHibernateFramework | +--------+---------------------------------------+
Lưu ý quan trọng
REPLACE()phân biệt chữ hoa/thường (case-sensitive)- Thay thế tất cả lần xuất hiện trong chuỗi
- Kết hợp với WHERE để giới hạn phạm vi:
WHERE FileDirectory LIKE '%AdvancedJava%' - Để thay thế không phân biệt hoa thường:
REPLACE(LOWER(col), LOWER('old'), 'new')nhưng sẽ làm mất case gốc
Ví dụ nâng cao: Chuẩn hóa số điện thoại
UPDATE customers
SET phone = REPLACE(REPLACE(REPLACE(phone, ' ', ''), '-', ''), '(', '')
WHERE phone IS NOT NULL;