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

แปลงค่า NULL เป็น 0 และแสดงผลในคอลัมน์ใหม่ด้วย IFNULL() ใน MySQL

การจัดการค่า NULL ด้วยฟังก์ชัน IFNULL()

ฟังก์ชัน IFNULL(expr1, expr2) จะคืนค่า expr1 หากไม่ใช่ NULL มิฉะนั้นคืน expr2 ใช้สำหรับแทนที่ค่า NULL ด้วยค่าเริ่มต้นที่ต้องการ

Syntax

SELECT column_name, IFNULL(column_name, default_value) FROM table_name;

ตัวอย่างการใช้งาน

สร้างตารางและเพิ่มข้อมูลที่มีค่า NULL ปนอยู่:

mysql> CREATE TABLE DemoTable (Value INT);
Query OK, 0 rows affected (1.02 sec)

mysql> INSERT INTO DemoTable VALUES (NULL), (10), (20), (NULL), (30);
Query OK, 5 rows affected

ข้อมูลต้นฉบับ:

mysql> SELECT * FROM DemoTable;
+-------+
| Value |
+-------+
| NULL  |
| 10    |
| 20    |
| NULL  |
| 30    |
+-------+
5 rows in set (0.00 sec)

ใช้ IFNULL แปลง NULL เป็น 0 และแสดงคอลัมน์ใหม่:

mysql> SELECT Value, IFNULL(Value, 0) FROM DemoTable;
+-------+-----------------+
| Value | IFNULL(Value,0) |
+-------+-----------------+
| NULL  | 0               |
| 10    | 10              |
| 20    | 20              |
| NULL  | 0               |
| 30    | 30              |
+-------+-----------------+
5 rows in set (0.00 sec)

ฟังก์ชันคล้ายกันที่ควรรู้

  • COALESCE(val1, val2, ..., valN) - คืนค่าแรกที่ไม่ใช่ NULL (รองรับหลายค่า)
  • NULLIF(expr1, expr2) - คืน NULL หาก expr1 = expr2 มิฉะนั้นคืน expr1
  • IS NULL / IS NOT NULL - ใช้ใน WHERE เพื่อกรองค่า NULL

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

  • คำนวณผลรวมที่มี NULL: SUM(IFNULL(price, 0))
  • แสดงข้อความแทน NULL: IFNULL(name, 'Unknown')
  • Join ตารางที่อาจไม่มีข้อมูลตรงกัน