การกรองข้อมูลที่มีค่า NULL ด้วย IS NULL
ใน MySQL (และ SQL มาตรฐาน) การเปรียบเทียบกับ NULL ต้องใช้ IS NULL หรือ IS NOT NULL ไม่สามารถใช้ = NULL หรือ != NULL ได้ เพราะ NULL ไม่เท่ากับอะไรเลย (รวมถึงตัวมันเอง)
สร้างตารางและเพิ่มข้อมูล
mysql> CREATE TABLE DemoTable (
CustomerName VARCHAR(100),
CustomerCountryName VARCHAR(100)
);
Query OK, 0 rows affected (0.95 sec)
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);
แสดงข้อมูลทั้งหมด
mysql> SELECT * FROM DemoTable;
ผลลัพธ์:
+--------------+---------------------+
| CustomerName | CustomerCountryName |
+--------------+---------------------+
| Chris | US |
| Bob | UK |
| Carol | NULL |
| David | AUS |
| Mike | NULL |
+--------------+---------------------+
5 rows in set (0.00 sec)
คำสั่งดึงเฉพาะแถวที่ CountryName เป็น NULL
mysql> SELECT * FROM DemoTable WHERE CustomerCountryName IS NULL;
ผลลัพธ์:
+--------------+---------------------+
| CustomerName | CustomerCountryName |
+--------------+---------------------+
| Carol | NULL |
| Mike | NULL |
+--------------+---------------------+
2 rows in set (0.00 sec)
คำอธิบาย
IS NULL: เงื่อนไขมาตรฐานสำหรับตรวจสอบ NULL= NULLจะคืนค่า UNKNOWN (ไม่ใช่ TRUE/FALSE) จึงไม่ทำงาน- ใช้
IS NOT NULLเพื่อดึงแถวที่มีค่า (ไม่ใช่ NULL) - ฟังก์ชัน
IFNULL()หรือCOALESCE()ใช้สำหรับแทนที่ค่า NULL ใน SELECT ไม่ใช่ WHERE