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

Tìm và thay giá trị có ký tự đặc biệt bằng NULL trong MySQL

Vấn đề: Cập nhật cột thành NULL khi khớp giá trị chứa ký tự đặc biệt

Cần tìm hàng có cột Code bằng chính xác chuỗi '100_Mike' (chứa gạch dưới) và đặt cột đó thành NULL.

Giải pháp: UPDATE với WHERE khớp chính xác

MySQL so sánh chuỗi mặc định không phân biệt chữ hoa/thường (collation *_ci) và khớp toàn bộ chuỗi. Ký tự đặc biệt như _, % chỉ có ý nghĩa đặc biệt trong LIKE, không phải trong =.

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

CREATE TABLE DemoTable (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Code VARCHAR(20)
) AUTO_INCREMENT = 1001;

INSERT INTO DemoTable (Code) VALUES
('John101'), ('234David'), ('100_Mike');

2. Dữ liệu ban đầu

+------+----------+
| Id   | Code     |
+------+----------+
| 1001 | John101  |
| 1002 | 234David |
| 1003 | 100_Mike |
+------+----------+

3. Câu lệnh UPDATE

UPDATE DemoTable 
SET Code = NULL 
WHERE Code = '100_Mike';

4. Kết quả

+------+----------+
| Id   | Code     |
+------+----------+
| 1001 | John101  |
| 1002 | 234David |
| 1003 | NULL     |
+------+----------+

Lưu ý quan trọng

  • Toán tử = so khớp toàn bộ chuỗi, không cần escape _ hay %.
  • Nếu dùng LIKE, _ khớp 1 ký tự bất kỳ, % khớp 0 hoặc nhiều ký tự. Cần escape: WHERE Code LIKE '100\_Mike' ESCAPE '\\'.
  • Đặt cột thành NULL khác với đặt thành chuỗi rỗng ''. NULL chiếm 0 byte (thường) và có ngữ nghĩa "chưa biết/không áp dụng".
  • Cột phải cho phép NULL (không có NOT NULL constraint).