MySQL การใช้งานฟังก์ชัน COALESCE()

ฟังก์ชัน COALESCE() ใน MySQL ใช้เพื่อคืนค่าตัวแรกที่ไม่ใช่ NULL จากชุดของค่า (arguments) ที่ส่งเข้าไป

เหมาะสำหรับการจัดการค่าที่อาจเป็น NULL โดยเลือกใช้ค่าทดแทนแบบลำดับความสำคัญ เช่น ถ้าคอลัมน์หนึ่งมีค่าเป็น NULL ก็ให้แสดงค่าอื่นที่สำรองไว้แทน

COALESCE() ช่วยให้สามารถแสดงข้อมูลที่ครบถ้วนโดยไม่ติดปัญหา NULL ในผลลัพธ์ และยังสามารถใช้แทน IFNULL() ได้แต่ยืดหยุ่นมากกว่า

ประโยชน์ของฟังก์ชัน COALESCE()

  • ใช้แทนค่าที่เป็น NULL ด้วยค่าทดแทนที่กำหนดไว้
  • ใช้เลือกค่าจากหลายคอลัมน์/ตัวแปร โดยคืนค่าตัวแรกที่ไม่ใช่ NULL
  • ป้องกันข้อผิดพลาดหรือการแสดงผลที่ว่างเปล่า
  • ใช้ใน SELECT, WHERE, ORDER BY, หรือ JOIN ได้
  • ยืดหยุ่นกว่า IFNULL() เพราะรับได้มากกว่าสองค่า

รูปแบบการใช้งาน

COALESCE(value1, value2, value3, ...)
  • value1, value2, ... คือชุดของค่าหรือคอลัมน์ที่ต้องการตรวจสอบค่าแรกที่ไม่ใช่ NULL
  • หากค่าทั้งหมดเป็น NULL ผลลัพธ์จะเป็น NULL

ตัวอย่างการใช้งาน

SQL
SELECT COALESCE(NULL, NULL, 'default') AS result;
-- ผลลัพธ์: 'default'

SELECT COALESCE(NULL, 25, 100) AS result;
-- ผลลัพธ์: 25

สมมติว่ามีตารางชื่อ contacts ซึ่งมีข้อมูลดังนี้

contact_id email phone fallback_contact
1NULL0891234567NULL
2[email protected]NULLNULL
3NULLNULLLine: user123
4NULLNULLNULL

แสดงช่องทางติดต่อแรกที่ไม่เป็น NULL

SQL
SELECT contact_id,
       COALESCE(email, phone, fallback_contact, 'ไม่มีข้อมูลติดต่อ') AS preferred_contact
FROM contacts;

หมายเหตุ

  • ถ้าค่าทั้งหมดที่ส่งเข้า COALESCE() เป็น NULL ผลลัพธ์จะเป็น NULL
  • ค่าที่ส่งเข้าไปควรมีชนิดข้อมูลใกล้เคียงกัน (เช่น เป็นข้อความทั้งหมด หรือเป็นจำนวนทั้งหมด) เพื่อหลีกเลี่ยง error หรือผลลัพธ์ไม่ตรงตามความต้องการ
  • หากใช้กับ DATE, DECIMAL, หรือ BOOLEAN ให้ระวังการแปลงชนิดข้อมูลโดยอัตโนมัติ
  • ไม่สามารถใช้ COALESCE() เพื่อกำหนดลำดับความสำคัญแบบมีเงื่อนไข (เช่น if-else ซ้อนกัน) ควรใช้ร่วมกับ CASE ถ้าต้องการความซับซ้อนมากขึ้น
แชร์เรื่องนี้