การจัดการค่า NULL ด้วยฟังก์ชัน IFNULL()
ฟังก์ชัน IFNULL(expr1, expr2) จะคืนค่า expr1 หากไม่ใช่ NULL มิฉะนั้นคืน expr2 ใช้สำหรับแทนที่ค่า NULL ด้วยค่าเริ่มต้นที่ต้องการ
Syntax
SELECT column_name, IFNULL(column_name, default_value) FROM table_name;
ตัวอย่างการใช้งาน
สร้างตารางและเพิ่มข้อมูลที่มีค่า NULL ปนอยู่:
mysql> CREATE TABLE DemoTable (Value INT); Query OK, 0 rows affected (1.02 sec) mysql> INSERT INTO DemoTable VALUES (NULL), (10), (20), (NULL), (30); Query OK, 5 rows affected
ข้อมูลต้นฉบับ:
mysql> SELECT * FROM DemoTable;
+-------+ | Value | +-------+ | NULL | | 10 | | 20 | | NULL | | 30 | +-------+ 5 rows in set (0.00 sec)
ใช้ IFNULL แปลง NULL เป็น 0 และแสดงคอลัมน์ใหม่:
mysql> SELECT Value, IFNULL(Value, 0) FROM DemoTable;
+-------+-----------------+ | Value | IFNULL(Value,0) | +-------+-----------------+ | NULL | 0 | | 10 | 10 | | 20 | 20 | | NULL | 0 | | 30 | 30 | +-------+-----------------+ 5 rows in set (0.00 sec)
ฟังก์ชันคล้ายกันที่ควรรู้
- COALESCE(val1, val2, ..., valN) - คืนค่าแรกที่ไม่ใช่ NULL (รองรับหลายค่า)
- NULLIF(expr1, expr2) - คืน NULL หาก expr1 = expr2 มิฉะนั้นคืน expr1
- IS NULL / IS NOT NULL - ใช้ใน WHERE เพื่อกรองค่า NULL
กรณีใช้งานจริง
- คำนวณผลรวมที่มี NULL:
SUM(IFNULL(price, 0)) - แสดงข้อความแทน NULL:
IFNULL(name, 'Unknown') - Join ตารางที่อาจไม่มีข้อมูลตรงกัน