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

Lọc dữ liệu loại trừ bản ghi cụ thể với NOT LIKE trong MySQL

Giới thiệu

Sử dụng toán tử NOT LIKE để loại bỏ các hàng chứa mẫu chuỗi không mong muốn.

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

mysql> create table DemoTable (
    -> StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> StudentName varchar(20),
    -> StudentAdmissionYear varchar(20)
    -> ); 
Query OK, 0 rows affected (1.22 sec)

mysql> insert into DemoTable(StudentName,StudentAdmissionYear) values('Chris','2017'); 
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(StudentName,StudentAdmissionYear) values('David','2015'); 
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(StudentName,StudentAdmissionYear) values('Bob','2019'); 
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable(StudentName,StudentAdmissionYear) values('Carol','2015'); 
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable(StudentName,StudentAdmissionYear) values('Sam','2018'); 
Query OK, 1 row affected (0.12 sec)

2. Dữ liệu gốc

mysql> select *from DemoTable;
+-----------+-------------+----------------------+
| StudentId | StudentName | StudentAdmissionYear |
+-----------+-------------+----------------------+
|         1 | Chris       | 2017                 |
|         2 | David       | 2015                 |
|         3 | Bob         | 2019                 |
|         4 | Carol       | 2015                 |
|         5 | Sam         | 2018                 |
+-----------+-------------+----------------------+
5 rows in set (0.00 sec)

3. Loại trừ năm 2015

mysql> select *from DemoTable 
    -> where StudentAdmissionYear not like '%2015%';

4. Kết quả (David và Carol bị loại)

+-----------+-------------+----------------------+
| StudentId | StudentName | StudentAdmissionYear |
+-----------+-------------+----------------------+
|         1 | Chris       | 2017                 |
|         3 | Bob         | 2019                 |
|         5 | Sam         | 2018                 |
+-----------+-------------+----------------------+
3 rows in set (0.04 sec)

Lưu ý về NOT LIKE:

  • %2015% khớp bất kỳ vị trí nào chứa '2015'
  • Nếu cột là INT, MySQL tự ép kiểu sang chuỗi để so sánh
  • Không dùng index (function trên cột) → full scan
  • NULL: NULL NOT LIKE '...' trả về NULL (không phải TRUE) → hàng NULL bị loại khỏi kết quả

Cách tốt hơn cho cột năm (numeric):

WHERE StudentAdmissionYear != 2015
-- hoặc
WHERE StudentAdmissionYear NOT IN (2015, 2016)