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

Đếm số giá trị NULL trong cột MySQL

Sử dụng CASE WHEN ... IS NULL THEN 1 ELSE 0 END bên trong SUM() để đếm số lượng NULL.

Ví dụ

Tạo bảng có giá trị NULL và chuỗi rỗng:

mysql> create table DemoTable ( 
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    FirstName varchar(20) 
); 
Query OK, 0 rows affected (0.77 sec)
mysql> insert into DemoTable(FirstName) values('John'); 
Query OK, 1 row affected (0.12 sec) 
mysql> insert into DemoTable(FirstName) values(null); 
Query OK, 1 row affected (0.25 sec) 
mysql> insert into DemoTable(FirstName) values(''); 
Query OK, 1 row affected (0.17 sec) 
mysql> insert into DemoTable(FirstName) values('Larry'); 
Query OK, 1 row affected (0.17 sec) 
mysql> insert into DemoTable(FirstName) values(''); 
Query OK, 1 row affected (0.15 sec) 
mysql> insert into DemoTable(FirstName) values(null); 
Query OK, 1 row affected (0.13 sec) 
mysql> insert into DemoTable(FirstName) values(null); 
Query OK, 1 row affected (0.11 sec) 
mysql> insert into DemoTable(FirstName) values('Bob'); 
Query OK, 1 row affected (0.15 sec)

Dữ liệu (3 NULL, 2 rỗng, 3 có giá trị):

+----+-----------+
| Id | FirstName |
+----+-----------+
| 1  | John      |
| 2  | NULL      |
| 3  |           |
| 4  | Larry     |
| 5  |           |
| 6  | NULL      |
| 7  | NULL      |
| 8  | Bob       |
+----+-----------+

Đếm NULL

mysql> select sum(case when FirstName IS NULL then 1 else 0 end) as NUMBER_OF_NULL_VALUE from DemoTable;
+----------------------+
| NUMBER_OF_NULL_VALUE |
+----------------------+
| 3                    |
+----------------------+

Phân biệt NULL vs rỗng (''): NULL là "không có giá trị", rỗng là "chuỗi độ dài 0". Câu truy vấn trên chỉ đếm NULL.