Để lọc các hàng có giá trị NULL trong một cột, bạn dùng toán tử IS NULL trong mệnh đề WHERE. Không dùng = NULL vì NULL không bằng bất kỳ giá trị nào (kể cả NULL).
Ví dụ minh họa
Tạo bảng khách hàng:
mysql> create table DemoTable (
CustomerName varchar(100),
CustomerCountryName varchar(100)
);
Chèn dữ liệu (có NULL ở CountryName):
mysql> insert into DemoTable values('Chris','US');
mysql> insert into DemoTable values('Bob','UK');
mysql> insert into DemoTable values('Carol',NULL);
mysql> insert into DemoTable values('David','AUS');
mysql> insert into DemoTable values('Mike',NULL);
Hiển thị dữ liệu:
mysql> select * from DemoTable;
Kết quả:
+--------------+---------------------+ | CustomerName | CustomerCountryName | +--------------+---------------------+ | Chris | US | | Bob | UK | | Carol | NULL | | David | AUS | | Mike | NULL | +--------------+---------------------+
Truy vấn lọc CustomerCountryName IS NULL
mysql> select * from DemoTable where CustomerCountryName IS NULL;
Kết quả:
+--------------+---------------------+ | CustomerName | CustomerCountryName | +--------------+---------------------+ | Carol | NULL | | Mike | NULL | +--------------+---------------------+
Giải thích:
IS NULL: Toán tử chuẩn SQL kiểm tra giá trị NULL= NULL: **SAI** - luôn trả về UNKNOWN, không khớp hàng nàoIS NOT NULL: Ngược lại, lọc hàng KHÔNG NULL
Best practice: Luôn dùng IS NULL / IS NOT NULL. Cấu hình SET SQL_MODE = 'ANSI' làm = NULL hoạt động khác nhưng không khuyến nghị.