Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ใช้ IFNULL() แทน COALESCE() ได้เมื่อมีอาร์กิวเมนต์ 2 ตัว

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')))