Để lọc bỏ các hàng có cột là NULL và chỉ giữ lại hàng có giá trị thực, MySQL dùng toán tử IS NOT NULL trong mệnh đề WHERE. Đây là cách chuẩn và duy nhất đúng để kiểm tra "không phải NULL".
Ví dụ minh họa
Tạo bảng điểm sinh viên:
mysql> CREATE TABLE DemoTable1458 (
StudentName VARCHAR(20),
StudentScore INT
);
Chèn dữ liệu (có NULL):
mysql> INSERT INTO DemoTable1458 VALUES ('Chris Brown', 56);
mysql> INSERT INTO DemoTable1458 VALUES ('David Miller', NULL);
mysql> INSERT INTO DemoTable1458 VALUES ('John Doe', 78);
mysql> INSERT INTO DemoTable1458 VALUES ('Adam Smith', NULL);
Dữ liệu:
mysql> SELECT * FROM DemoTable1458;
+--------------+--------------+ | StudentName | StudentScore | +--------------+--------------+ | Chris Brown | 56 | | David Miller | NULL | | John Doe | 78 | | Adam Smith | NULL | +--------------+--------------+
Lọc chỉ hàng có điểm (NOT NULL)
mysql> SELECT StudentName, StudentScore
FROM DemoTable1458
WHERE StudentScore IS NOT NULL;
Kết quả (2 hàng):
+-------------+--------------+ | StudentName | StudentScore | +-------------+--------------+ | Chris Brown | 56 | | John Doe | 78 | +-------------+--------------+
Các lỗi thường gặp
| Sai | Đúng | Lý do |
|---|---|---|
WHERE Score <> NULL | WHERE Score IS NOT NULL | NULL <> NULL là UNKNOWN, không phải TRUE |
WHERE Score = NULL | WHERE Score IS NULL | Tương tự, không bao giờ TRUE |
WHERE NOT (Score = NULL) | WHERE Score IS NOT NULL | Logic 3 giá trị: NOT UNKNOWN = UNKNOWN |
Kết hợp với các điều kiện khác