ฟังก์ชัน IFNULL() ใน MySQL ใช้เพื่อตรวจสอบค่าที่อาจเป็น NULL และแทนที่ค่าดังกล่าวด้วยค่าที่กำหนดไว้ หากค่าที่ตรวจสอบไม่ใช่ NULL จะคืนค่าต้นฉบับ
จุดประสงค์หลักคือการหลีกเลี่ยงการแสดงผลหรือประมวลผลค่าที่ว่างเปล่า (NULL) เช่น ใช้แทนค่าแสดงผลเริ่มต้น หรือคำนวณข้อมูลอย่างถูกต้องแม้มีค่าว่าง
ประโยชน์ของฟังก์ชัน IFNULL()
- แสดงค่าทดแทนเมื่อพบค่า
NULL - ป้องกันปัญหาการแสดงค่าที่ว่างเปล่าในรายงาน
- ช่วยให้การคำนวณทางคณิตศาสตร์หรือข้อความไม่เกิดปัญหาเพราะ
NULL - ใช้ในการจัดการข้อมูลที่มีการเว้นช่องว่างหรือไม่ได้ระบุค่า
- ใช้ร่วมกับ
SELECT,WHERE,ORDER BY,GROUP BYได้
รูปแบบการใช้งาน
IFNULL(expression, alt_value)
expressionคือค่าที่จะตรวจสอบว่ามีค่าเป็นNULLหรือไม่alt_valueคือค่าที่จะถูกใช้แทนถ้าexpressionมีค่าเป็นNULL
ตัวอย่างการใช้งาน
SQL
SELECT IFNULL(NULL, 'ไม่ระบุ') AS result;
-- ผลลัพธ์: 'ไม่ระบุ'
SELECT IFNULL('Hello', 'ไม่ระบุ') AS result;
-- ผลลัพธ์: 'Hello'สมมติว่ามีตารางชื่อ employees ซึ่งเก็บข้อมูลดังนี้
| employee_id | name | department |
|---|---|---|
| 1 | Somchai | HR |
| 2 | Arisa | NULL |
| 3 | John | IT |
| 4 | Sara | NULL |
แสดงชื่อแผนก หากว่างให้ขึ้นข้อความว่า “ไม่ระบุแผนก”
SQL
SELECT employee_id, name,
IFNULL(department, 'ไม่ระบุแผนก') AS display_department
FROM employees;ผลลัพธ์
| employee_id | name | display_department |
|---|---|---|
| 1 | Somchai | HR |
| 2 | Arisa | ไม่ระบุแผนก |
| 3 | John | IT |
| 4 | Sara | ไม่ระบุแผนก |
หมายเหตุ
IFNULL()ตรวจสอบเพียงว่าค่าเป็นNULLหรือไม่เท่านั้น ไม่สามารถใช้กับค่า “ว่างเปล่าแต่ไม่ NULL” เช่น''หรือ0alt_valueควรเป็นชนิดข้อมูลเดียวกับexpressionเพื่อป้องกันผลลัพธ์ไม่ตรงตามความต้องการ- หากต้องตรวจสอบหลายค่าพร้อมกัน ควรใช้
COALESCE()แทน ซึ่งรองรับหลาย argument - หากใช้กับ field ที่ไม่สามารถเป็น
NULLได้ (เช่นNOT NULL) ผลลัพธ์ของIFNULL()จะเหมือนค่าปกติเสมอ