วิธีนับจำนวนค่า NULL ในคอลัมน์ MySQL
ใช้ CASE WHEN ... THEN 1 ELSE 0 END ร่วมกับ SUM() เนื่องจาก COUNT(column) ไม่นับ NULL
SELECT SUM(CASE WHEN yourColumn IS NULL THEN 1 ELSE 0 END) AS null_count FROM yourTable;
ตัวอย่างการใช้งาน
สร้างตารางและเพิ่มข้อมูลผสม NULL และ Empty String:
mysql> create table DemoTable (
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
FirstName varchar(20)
);
mysql> insert into DemoTable(FirstName) values('John');
mysql> insert into DemoTable(FirstName) values(NULL);
mysql> insert into DemoTable(FirstName) values('');
mysql> insert into DemoTable(FirstName) values('Larry');
mysql> insert into DemoTable(FirstName) values('');
mysql> insert into DemoTable(FirstName) values(NULL);
mysql> insert into DemoTable(FirstName) values(NULL);
mysql> insert into DemoTable(FirstName) values('Bob');
ข้อมูลทั้งหมด:
+----+-----------+ | Id | FirstName | +----+-----------+ | 1 | John | | 2 | NULL | | 3 | | | 4 | Larry | | 5 | | | 6 | NULL | | 7 | NULL | | 8 | Bob | +----+-----------+
คิวรีนับเฉพาะค่า 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 | +----------------------+
จุดสำคัญ: Empty String ('') ไม่ใช่ NULL | ใช้ IS NULL / IS NOT NULL ในการตรวจสอบ | COUNT(FirstName) จะให้นับแค่ 5 (ไม่นับ NULL) | COUNT(*) ให้นับทั้งหมด 8 แถว
นับ NULL และ Empty String พร้อมกัน:
SELECT SUM(CASE WHEN FirstName IS NULL OR FirstName = '' THEN 1 ELSE 0 END) FROM DemoTable;