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

MySQL tìm và thay thế chuỗi trong cột?

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;