การใช้ฟังก์ชัน IF() ร่วมกับ IS NULL ใน MySQL
เมื่อต้องการตรวจสอบว่าคอลัมน์ใดมีค่า NULL และสร้างคอลัมน์ใหม่ที่แสดงค่า 1 สำหรับแถวที่เป็น NULL และ 0 สำหรับแถวที่มีข้อมูล เราสามารถใช้ฟังก์ชัน IF() ร่วมกับเงื่อนไข IS NULL ได้
ตัวอย่างการสร้างตารางและข้อมูลทดสอบ
mysql> CREATE TABLE DemoTable (
Name VARCHAR(100),
CountryName VARCHAR(100)
);
Query OK, 0 rows affected (0.70 sec)
เพิ่มข้อมูลตัวอย่าง
mysql> INSERT INTO DemoTable VALUES('Chris','US');
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO DemoTable VALUES('Mike',NULL);
Query OK, 1 row affected (0.12 sec)
mysql> INSERT INTO DemoTable(Name) VALUES('David');
Query OK, 1 row affected (0.38 sec)
mysql> INSERT INTO DemoTable VALUES('Bob','AUS');
Query OK, 1 row affected (0.45 sec)
แสดงข้อมูลทั้งหมดในตาราง
mysql> SELECT * FROM DemoTable;
ผลลัพธ์:
+-------+-------------+
| Name | CountryName |
+-------+-------------+
| Chris | US |
| Mike | NULL |
| David | NULL |
| Bob | AUS |
+-------+-------------+
4 rows in set (0.00 sec)
คำสั่ง SQL สำหรับเปรียบเทียบ NULL และสร้างคอลัมน์ใหม่
mysql> SELECT Name, CountryName, IF(CountryName IS NULL, 1, 0) AS CountDemo FROM DemoTable;
ผลลัพธ์:
+-------+-------------+-----------+
| Name | CountryName | CountDemo |
+-------+-------------+-----------+
| Chris | US | 0 |
| Mike | NULL | 1 |
| David | NULL | 1 |
| Bob | AUS | 0 |
+-------+-------------+-----------+
4 rows in set (0.00 sec)
คำอธิบาย
IF(CountryName IS NULL, 1, 0): ตรวจสอบว่าCountryNameเป็น NULL หรือไม่ ถ้าใช่ให้คืนค่า 1 ไม่ใช่ให้คืนค่า 0AS CountDemo: ตั้งชื่ออีเลียสสำหรับคอลัมน์ใหม่
วิธีนี้เหมาะสำหรับการสร้างแฟล็กหรือตัวบ่งชี้สำหรับข้อมูลที่หายไป (missing data) ในการรายงานหรือการวิเคราะห์ข้อมูลต่อไป