A-AA+then

ทั้งสามฟังก์ชั่นเป็นฟังก์ชั่นสำหรับตรวจสอบค่า NULL ในฐานข้อมูล โดยที่ ในฐานข้อมูล MySQL จะใช้ฟังก์ชั่น IFNULL แทน ISNULL

ความแตกต่างระหว่าง ISNULL และ COALESCE
  • ISNULL เป็นฟังก์ชั่น ซึ่งมันจะมีการประมวลผลเพียงครั้งเดียว ในขณะที่ COALESCE เป็นคำสั่ง ซึ่งจะมีการประมวลผลหลายครั้ง
  • ISNULL จะคืนค่าผลลัพท์ของข้อมูลตามชนิดของพารามิเตอร์แรกที่ส่งให้กับฟังก์ชั่น ส่วน COALESCE จะคืนค่าชนิดของข้อมูลตามกฏลำดับความสำคัญของชนิดของข้อมูล
  • ISNULL จะคืนค่าผลลัพท์เป็นค่าหนึ่งๆที่ไม่ใช่ NULL ในขณะที่ COALESCE จะคืนค่าข้อมูลจากพารามิเตอร์ถัดไป ซึ่งหาก พารามิเตอร์ถัดไปเป็น NULL มันจะคืนค่า NULL กลับมา ข้อแตกต่างของผลลัพท์ในข้อนี้ อาจทำให้การเรียงลำดับผลลัพท์ ของทั้งสองรูปแบบนี้แตกต่างกันได้ การนำไปใช้งานควรระมัดระวัง
  • ISNULL จะรับพารามิเตอร์ ได้แค่เพียง 2 ตัว ในขณะที่ COALESCE สามารถรับค่า พารามิเตอร์ ได้มากกว่า โดยจะคืนค่าพารามิเตอร์ตัวแรกสุดที่ไม่เป็น NULL
สรุปสุดท้าย ISNULL จะเร็วกว่า COALESCE

ตัวอย่างการใช้งาน
SELECT COALESCE(`hourly_wage` * 40 * 52, `salary`, `commission` * `num_sales`) AS `money` FROM `table_demo`
ผลลัพท์การคำนวณจำนวนเงินจากตารางด้านบน
SELECT 1+IFNULL(MAX(`id`), 0) AS `id` FROM `table_demo`
ผลลัพท์เป็นการหาค่า id ถัดไปจากตารางด้านบน (id นี้เป็นคนละตัวกันกับค่าที่ได้จาก auto_increment นะครับ)
ตัวอย่างนี้สามารถเขียนได้อีกแบบโดยใช้ COALESCE ซึ่งจะให้ผลลัพท์เหมือนกัน
SELECT 1+COALESCE(MAX(`id`), 0) AS `id` FROM `table_demo`

SQL

Relate

^