ปัญหาการคูณกับ NULL
ใน SQL การคำนวณกับ NULL จะได้ผลลัพธ์เป็น NULL เสมอ:
NULL * 10 = NULL -- ไม่ใช่ 0
การแก้ไขด้วย COALESCE
mysql> CREATE TABLE DemoTable1842 (
NumberOfItems INT,
Amount INT
);
mysql> INSERT INTO DemoTable1842 VALUES(10, 40);
mysql> INSERT INTO DemoTable1842 VALUES(20, 5);
mysql> INSERT INTO DemoTable1842 VALUES(NULL, 10);
Query คูณพร้อมจัดการ NULL
mysql> SELECT NumberOfItems, Amount,
COALESCE(NumberOfItems, 1) * Amount AS Total
FROM DemoTable1842;
ผลลัพธ์:
+---------------+--------+-------+
| NumberOfItems | Amount | Total |
+---------------+--------+-------+
| 10 | 40 | 400 |
| 20 | 5 | 100 |
| NULL | 10 | 10 |
+---------------+--------+-------+
COALESCE vs IFNULL
| ฟังก์ชัน | พารามิเตอร์ | คืนค่า |
|---|---|---|
| COALESCE(val1, val2, ...) | หลายค่า | ค่าแรกที่ไม่ใช่ NULL |
| IFNULL(val1, val2) | 2 ค่า | val1 ถ้าไม่ใช่ NULL, ไม่งั้น val2 |