เมื่อต้องการคำนวณค่ารวมจากหลายคอลัมน์ที่อาจมีค่า NULL ให้ใช้ IFNULL() แปลง NULL เป็น 0 ก่อนทำการบวก เพื่อป้องกันผลลัพธ์เป็น NULL
ปัญหา: NULL + ค่า = NULL
mysql> select 10 + NULL; -- ผลลัพธ์: NULL
สร้างตารางและข้อมูลมี NULL
mysql> create table DemoTable (
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
Value1 int, Value2 int
);
mysql> insert into DemoTable(Value1,Value2) values(10,20),(NULL,NULL),(40,NULL);
ข้อมูลในตาราง
+----+--------+--------+ | Id | Value1 | Value2 | +----+--------+--------+ | 1 | 10 | 20 | | 2 | NULL | NULL | | 3 | 40 | NULL | +----+--------+--------+
คำสั่ง IFNULL แปลง NULL เป็น 0 แล้วบวก
mysql> select ifnull(Value1,0) + ifnull(Value2,0) AS NULL_AS_ZERO from DemoTable;
ผลลัพธ์
+--------------+ | NULL_AS_ZERO | +--------------+ | 30 | | 0 | | 40 | +--------------+
IFNULL() vs COALESCE()
| ฟังก์ชัน | รูปแบบ | คำอธิบาย |
|---|---|---|
| IFNULL | IFNULL(expr, value) | MySQL เฉพาะ 2 อาร์กิวเมนต์ |
| COALESCE | COALESCE(val1, val2, ...) | มาตรฐาน SQL รองรับหลายค่า |
| IF | IF(expr IS NULL, 0, expr) | ยาวกว่า แต่เข้าใจง่าย |