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

Xóa hàng trong MySQL nếu chuỗi trong cột khớp mẫu (LIKE)


Giới thiệu

Dùng DELETE ... WHERE column LIKE pattern để xóa các dòng có chuỗi khớp mẫu (pattern matching) với ký tự đại diện % (bất kỳ chuỗi) và _ (một ký tự).

Ví dụ minh họa

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

mysql> CREATE TABLE DemoTable (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Name VARCHAR(100)
);
mysql> INSERT INTO DemoTable (Name) VALUES 
('John Smith'), ('Carol Taylor'), ('John Doe'), ('Chris Brown'), ('John Brown');

Xem dữ liệu trước

mysql> SELECT * FROM DemoTable;
+----+--------------+
| Id | Name         |
+----+--------------+
| 1  | John Smith   |
| 2  | Carol Taylor |
| 3  | John Doe     |
| 4  | Chris Brown  |
| 5  | John Brown   |
+----+--------------+

Xóa các tên chứa 'ohn' (John, Johnson...)

mysql> DELETE FROM DemoTable WHERE Name LIKE '%ohn%';
Query OK, 3 rows affected (0.16 sec)

Kết quả sau xóa

mysql> SELECT * FROM DemoTable;
+----+--------------+
| Id | Name         |
+----+--------------+
| 2  | Carol Taylor |
| 4  | Chris Brown  |
+----+--------------+

Các mẫu LIKE phổ biến

MẫuÝ nghĩaVí dụ khớp
%ohn%Chứa 'ohn' ở bất kỳ đâuJohn, Johnson, Johns
John%Bắt đầu bằng 'John'John, Johnny, John Smith
%SmithKết thúc bằng 'Smith'John Smith, Smith
J_hn4 ký tự, bắt đầu J, kết thúc hnJohn, Joon
%[aeiou]%Chứa nguyên âm (cần REGEXP)-

⚠️ Cảnh báo

  • Không có UNDO: DELETE vĩnh viễn. Luôn chạy SELECT trước để kiểm tra.
  • Hiệu năng: LIKE '%...%' không dùng index (full table scan).
  • NULL: LIKE không khớp NULL. Dòng NULL không bị xóa.

An toàn hơn: Soft Delete

ALTER TABLE DemoTable ADD COLUMN deleted BOOLEAN DEFAULT FALSE;
UPDATE DemoTable SET deleted = TRUE WHERE Name LIKE '%ohn%';