Trong MySQL, NULL đại diện cho giá trị không xác định / thiếu — khác với chuỗi rỗng '' hoặc số 0. Để lọc hàng có cột là NULL, phải dùng IS NULL hoặc IS NOT NULL; không thể dùng = NULL hoặc <> NULL vì NULL = NULL là UNKNOWN (không phải TRUE).
Ví dụ minh họa
Tạo bảng:
mysql> CREATE TABLE DemoTable1455 (
Name VARCHAR(20)
);
Chèn dữ liệu (có NULL và chuỗi rỗng):
mysql> INSERT INTO DemoTable1455 VALUES ('John');
mysql> INSERT INTO DemoTable1455 VALUES (NULL);
mysql> INSERT INTO DemoTable1455 VALUES ('');
Dữ liệu:
mysql> SELECT * FROM DemoTable1455;
+------+ | Name | +------+ | John | | NULL | | | +------+
Truy vấn đúng: Lọc NULL
mysql> SELECT * FROM DemoTable1455
WHERE Name <> 'John' OR Name IS NULL;
Kết quả (hàng NULL và hàng rỗng):
+------+ | Name | +------+ | NULL | | | +------+
Các mẫu truy vấn NULL phổ biến
| Mục đích | Cú pháp đúng | Sai (không hoạt động) |
|---|---|---|
| Là NULL | WHERE col IS NULL | WHERE col = NULL |
| Không phải NULL | WHERE col IS NOT NULL | WHERE col <> NULL |
| NULL hoặc rỗng | WHERE col IS NULL OR col = '' | WHERE col = '' OR col = NULL |
| Thay NULL bằng giá trị khác | COALESCE(col, 'N/A') hoặc IFNULL(col, 'N/A') | — |
| Sắp xếp NULL cuối | ORDER BY col IS NULL, col | ORDER BY col (NULL lên đầu) |
Ví dụ thực tế