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

แปลง NULL เป็น 0 ใน MySQL ด้วย COALESCE()

ใช้ฟังก์ชัน 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 SQLMySQL proprietary
คืนค่าค่าแรกที่ไม่ใช่ NULLค่าแรกถ้าไม่ใช่ NULL ไม่งั้นค่าที่ 2
ตัวอย่างCOALESCE(a,b,c,0)IFNULL(a,0)

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

  • คำนวณยอดรวมที่มี NULL: SUM(COALESCE(price, 0))
  • แสดงผลในรายงาน: แทน NULL ด้วย 0 หรือ '-'
  • ป้องกัน error ในการคำนวณ: COALESCE(discount, 0) * amount