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

Truy vấn MySQL SELECT lấy dữ liệu có giá trị NULL

Để 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ào
  • IS 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ị.