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

ใช้ COALESCE() ใน MySQL หาค่าแรกที่ไม่ใช่ NULL จากหลายคอลัมน์

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)

คำอธิบายการทำงาน

แถวStudentNameStudentSubjectCOALESCE ผลลัพธ์เหตุผล
1ChrisMySQLChrisStudentName ไม่ใช่ NULL → เอาตัวแรก
2DavidNULLDavidStudentName ไม่ใช่ NULL → เอาตัวแรก
3NULLMongoDBMongoDBStudentName เป็น NULL → ข้ามไป StudentSubject

การใช้งานจริง

  • แสดงชื่อเล่น ถ้าไม่มีใช้ชื่อจริง: COALESCE(nickname, first_name, 'Guest')
  • ค่าเริ่มต้นสำหรับการคำนวณ: COALESCE(discount, 0)
  • รองรับหลายค่ามากกว่า 2 คอลัมน์ได้

ต่างจาก IFNULL(): IFNULL รับแค่ 2 อาร์กิวเมนต์ COALESCE รับได้หลายตัว และเป็นมาตรฐาน ANSI SQL