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)