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

Cập nhật cột text thay thế chuỗi con với REPLACE() trong MySQL

Thay thế chuỗi con trong cột TEXT/VARCHAR với REPLACE()

Hàm REPLACE(str, from_str, to_str) thay thế tất cả lần xuất hiện của from_str trong str bằng to_str. Kết hợp với UPDATE để sửa dữ liệu trực tiếp trong bảng.

1. Tạo bảng và chèn dữ liệu

mysql> CREATE TABLE DemoTable (Code VARCHAR(100));
mysql> INSERT INTO DemoTable VALUES
    ('8565-9848-7474'), ('9994-6464-8737'), ('6574-9090-7643');

2. Xem dữ liệu

mysql> SELECT * FROM DemoTable;
+----------------+
| Code           |
+----------------+
| 8565-9848-7474 |
| 9994-6464-8737 |
| 6574-9090-7643 |
+----------------+

3. Truy vấn: Thay thế chuỗi cụ thể hoàn toàn

mysql> UPDATE DemoTable
    SET Code = REPLACE(Code, '9994-6464-8737', '9994-9999-88888');

Kết quả: Query OK, 1 row affected ... Rows matched: 3 Changed: 1

4. Kiểm tra kết quả

mysql> SELECT * FROM DemoTable;
+-----------------+
| Code            |
+-----------------+
| 8565-9848-7474  |
| 9994-9999-88888 |
| 6574-9090-7643  |
+-----------------+

Giải thích:

  • Chỉ hàng 2 khớp chính xác '9994-6464-8737' → bị thay thế
  • Hàng 1 và 3 không khớp → không đổi
  • Rows matched: 3 (WHERE true cho tất cả), Changed: 1 (chỉ 1 hàng thực sự đổi)

Các biến thể hữu ích:

  • Thay thế 1 ký tự: REPLACE(Code, '-', '/') (đổi tất cả gạch ngang thành gạch chéo)
  • Xóa ký tự: REPLACE(Code, '-', '')
  • Có điều kiện: UPDATE ... SET Code=REPLACE(Code,'A','B') WHERE Code LIKE '%A%'
  • Case-sensitive: REPLACE(BINARY Code, 'abc', 'XYZ')

Lưu ý: REPLACE thay thế TẤT CẢ lần xuất hiện. Nên backup hoặc test SELECT trước: SELECT Code, REPLACE(Code,...) FROM DemoTable.