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

Thay thế ký tự đặc biệt trong cột MySQL 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 bằng to_str trong chuỗi. Dùng trong UPDATE để sửa dữ liệu hàng loạt.

Ví dụ minh họa

Tạo bảng và chèn dữ liệu có chuỗi '______' cần thay:

CREATE TABLE DemoTable1574 (StudentCode VARCHAR(20));
INSERT INTO DemoTable1574 VALUES 
('111_Carol'), ('______'), ('David_12345'), ('______');

Thay '______' bằng 'Mike_007':

UPDATE DemoTable1574
SET StudentCode = REPLACE(StudentCode, '______', 'Mike_007');

Kết quả

StudentCode (trước)StudentCode (sau)
111_Carol111_Carol
______Mike_007
David_12345David_12345
______Mike_007

Các lưu ý quan trọng

  • Thay thế tất cả lần xuất hiện: REPLACE('aaa', 'a', 'b') → 'bbb'.
  • Phân biệt chữ hoa/thường: Mặc định case-insensitive (tuỳ collation). Dùng REPLACE(BINARY col, ...) để case-sensitive.
  • Không dùng REGEXP: REPLACE chỉ thay chuỗi cố định, không hỗ trợ pattern.
  • An toàn: Chạy SELECT trước để kiểm tra: SELECT StudentCode, REPLACE(StudentCode, '______', 'Mike_007') FROM DemoTable1574;

Thay thế nhiều ký tự cùng lúc

MySQL không có TRANSLATE như Oracle/PostgreSQL. Cách thay thế: lồng REPLACE:

UPDATE t SET col = REPLACE(REPLACE(REPLACE(col, 'a', '1'), 'b', '2'), 'c', '3');

Hoặc MySQL 8.0+: REGEXP_REPLACE(col, '[abc]', {'a':'1','b':'2','c':'3'}) (xem bài 1003075233).

Ứng dụng thực tế

  • Dọn dữ liệu: xóa ký tự điều khiển, chuẩn hóa phone/email.
  • Masking dữ liệu: thay số thẻ tín dụng REPLACE(card, SUBSTRING(card,5,8), '****').
  • Chuẩn hóa import CSV: thay ',' thành '.' cho số thập phân.