ใช้ฟังก์ชัน COALESCE() แปลงค่า NULL เป็น 0 (หรือค่าเริ่มต้นอื่นๆ)
ไวยากรณ์
SELECT COALESCE(yourColumnName, 0) AS anyAliasName FROM yourTableName;
สร้างตารางตัวอย่าง
mysql> CREATE TABLE convertNullToZeroDemo (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Name VARCHAR(20),
-> Salary INT
-> );
เพิ่มข้อมูลตัวอย่าง (มี NULL)
mysql> INSERT INTO convertNullToZeroDemo(Name, Salary) VALUES
('John', NULL), ('Carol', 5610), ('Bob', NULL), ('David', NULL);
แสดงข้อมูลก่อน
mysql> SELECT * FROM convertNullToZeroDemo;
ผลลัพธ์:
+----+-------+--------+ | Id | Name | Salary | +----+-------+--------+ | 1 | John | NULL | | 2 | Carol | 5610 | | 3 | Bob | NULL | | 4 | David | NULL | +----+-------+--------+
แปลง NULL เป็น 0 ด้วย COALESCE
mysql> SELECT COALESCE(Salary, 0) AS CONVERT_NULL_TO_0 FROM convertNullToZeroDemo;
ผลลัพธ์:
+--------------------+ | CONVERT_NULL_TO_0 | +--------------------+ | 0 | | 5610 | | 0 | | 0 | +--------------------+
COALESCE vs IFNULL
| คุณสมบัติ | COALESCE() | IFNULL() |
|---|---|---|
| จำนวนพารามิเตอร์ | 2 ตัวขึ้นไป | 2 ตัวเท่านั้น |
| มาตรฐาน SQL | มาตรฐาน ANSI SQL | MySQL proprietary |
| คืนค่า | ค่าแรกที่ไม่ใช่ NULL | ค่าแรกถ้าไม่ใช่ NULL ไม่งั้นค่าที่ 2 |
| ตัวอย่าง | COALESCE(a,b,c,0) | IFNULL(a,0) |
กรณีใช้งานจริง
- คำนวณยอดรวมที่มี NULL:
SUM(COALESCE(price, 0)) - แสดงผลในรายงาน: แทน NULL ด้วย 0 หรือ '-'
- ป้องกัน error ในการคำนวณ:
COALESCE(discount, 0) * amount