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

Thay thế ký tự trong cột MySQL bằng REPLACE() và UPDATE

Vấn đề: Thay thế tất cả ký tự cụ thể trong cột

Cần xóa hoặc thay thế một ký tự (ví dụ: gạch dưới _) xuất hiện nhiều lần trong chuỗi của cột.

Giải pháp: Kết hợp REPLACE() trong UPDATE

Hàm REPLACE(str, from_str, to_str) trả về chuỗi mới với tất cả from_str được thay bằng to_str. Dùng trong SET của UPDATE.

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

CREATE TABLE DemoTable (
    Code VARCHAR(20)
);

INSERT INTO DemoTable VALUES
('John_123'),
('32189_Sam_987'),
('Miller_David_456_909');

2. Dữ liệu trước khi thay thế

+----------------------+
| Code                 |
+----------------------+
| John_123             |
| 32189_Sam_987        |
| Miller_David_456_909 |
+----------------------+

3. Câu lệnh UPDATE

UPDATE DemoTable 
SET Code = REPLACE(Code, '_', '');

Thay mọi ký tự _ bằng chuỗi rỗng (xóa bỏ).

4. Kết quả sau cập nhật

+-------------------+
| Code              |
+-------------------+
| John123           |
| 32189Sam987       |
| MillerDavid456909 |
+-------------------+

Mở rộng: Thay thế chuỗi con

-- Thay 'old_' bằng 'new_'
UPDATE DemoTable SET Code = REPLACE(Code, 'old_', 'new_');

-- Thay nhiều ký tự: lồng REPLACE
UPDATE DemoTable SET Code = REPLACE(REPLACE(Code, '_', ''), '-', '');

Lưu ý

  • REPLACE phân biệt chữ hoa/chữ thường (case-sensitive) trong MySQL mặc định (collation *_ci thì không phân biệt).
  • Cập nhật toàn bảng – hãy chắc chắn điều kiện WHERE nếu chỉ muốn thay một phần dữ liệu.
  • Với dữ liệu lớn, cân nhắc chia batch để tránh khóa bảng quá lâu.