IFNULL() vs COALESCE()
ทั้งคู่เทียบเท่ากัน ก็ต่อเมื่อมีอาร์กิวเมนต์ 2 ตัว
ความแตกต่าง
| ฟังก์ชัน | จำนวนอาร์กิวเมนต์ | คืนค่า |
|---|---|---|
| IFNULL(a, b) | 2 ตัวเท่านั้น | a ถ้าไม่ใช่ NULL ไม่งั้น b |
| COALESCE(a, b, c...) | 1 ถึง N ตัว | Non-NULL แรก |
ตัวอย่างเทียบเท่า
mysql> SELECT IFNULL(NULL, 'Green');
+-----------------------+
| IFNULL(NULL, 'Green') |
+-----------------------+
| Green |
+-----------------------+
mysql> SELECT COALESCE(NULL, 'Green');
+-------------------------+
| COALESCE(NULL, 'Green') |
+-------------------------+
| Green |
+-------------------------+
เมื่อไหร่ใช้ไหน
- IFNULL(): Logic เรียบง่าย 2 ค่า (value, default)
- COALESCE(): Chain หลายค่า (fallback หลายระดับ), Standard SQL
ตัวอย่าง COALESCE ที่ IFNULL ทำไม่ได้
SELECT COALESCE(mobile, home, work, 'N/A') FROM contacts;
-- IFNULL ต้องซ้อน: IFNULL(mobile, IFNULL(home, IFNULL(work, 'N/A')))