COALESCE(col1, col2, col3, ...) คืนค่า แรกสุดที่ไม่ใช่ NULL จากรายการคอลัมน์/ค่าที่กำหนด
ตัวอย่างการใช้งาน
สร้างตารางนักเรียน (บางฟิลด์เป็น NULL):
mysql> create table DemoTable1927 (
-> StudentName varchar(20),
-> StudentSubject varchar(20)
-> );
เพิ่มข้อมูล:
mysql> insert into DemoTable1927 values('Chris','MySQL');
mysql> insert into DemoTable1927 values('David',NULL);
mysql> insert into DemoTable1927 values(NULL,'MongoDB');
ดูข้อมูลดิบ:
mysql> select * from DemoTable1927;
+-------------+----------------+ | StudentName | StudentSubject | +-------------+----------------+ | Chris | MySQL | | David | NULL | | NULL | MongoDB | +-------------+----------------+ 3 rows in set (0.00 sec)
คิวรีใช้ COALESCE
mysql> select coalesce(StudentName, StudentSubject) as Result from DemoTable1927;
ผลลัพธ์:
+---------+ | Result | +---------+ | Chris | | David | | MongoDB | +---------+ 3 rows in set (0.00 sec)
คำอธิบายการทำงาน
| แถว | StudentName | StudentSubject | COALESCE ผลลัพธ์ | เหตุผล |
|---|---|---|---|---|
| 1 | Chris | MySQL | Chris | StudentName ไม่ใช่ NULL → เอาตัวแรก |
| 2 | David | NULL | David | StudentName ไม่ใช่ NULL → เอาตัวแรก |
| 3 | NULL | MongoDB | MongoDB | StudentName เป็น NULL → ข้ามไป StudentSubject |
การใช้งานจริง
- แสดงชื่อเล่น ถ้าไม่มีใช้ชื่อจริง:
COALESCE(nickname, first_name, 'Guest') - ค่าเริ่มต้นสำหรับการคำนวณ:
COALESCE(discount, 0) - รองรับหลายค่ามากกว่า 2 คอลัมน์ได้
ต่างจาก IFNULL(): IFNULL รับแค่ 2 อาร์กิวเมนต์ COALESCE รับได้หลายตัว และเป็นมาตรฐาน ANSI SQL