เมื่อต้องการแสดงค่า 0 แทนค่า NULL ในผลลัพธ์ ให้ใช้ฟังก์ชัน IFNULL() หรือ COALESCE()
IFNULL() - สำหรับคอลัมน์เดียว
SELECT IFNULL(yourColumnName, 0) AS anyVariableName
FROM yourTableName;
ตัวอย่างการใช้งาน
1. สร้างตารางและเพิ่มข้อมูลที่มี NULL
mysql> CREATE TABLE TypecastDemo (
-> AccountNumber INT
-> );
Query OK, 0 rows affected (0.84 sec)
mysql> INSERT INTO TypecastDemo VALUES (NULL);
mysql> INSERT INTO TypecastDemo VALUES (1234);
mysql> INSERT INTO TypecastDemo VALUES (9876);
mysql> INSERT INTO TypecastDemo VALUES (6666);
mysql> INSERT INTO TypecastDemo VALUES (NULL);
mysql> INSERT INTO TypecastDemo VALUES (NULL);
mysql> INSERT INTO TypecastDemo VALUES (3214);
2. ดูข้อมูลดิบ
mysql> SELECT * FROM TypecastDemo;
+---------------+
| AccountNumber |
+---------------+
| NULL |
| 1234 |
| 9876 |
| 6666 |
| NULL |
| NULL |
| 3214 |
+---------------+
7 rows in set (0.00 sec)
3. แปลง NULL เป็น 0
mysql> SELECT IFNULL(AccountNumber, 0) AS TypeCastNullToZero
-> FROM TypecastDemo;
+--------------------+
| TypeCastNullToZero |
+--------------------+
| 0 |
| 1234 |
| 9876 |
| 6666 |
| 0 |
| 0 |
| 3214 |
+--------------------+
7 rows in set (0.00 sec)
COALESCE() - สำหรับหลายคอลัมน์หรือหลายค่า
SELECT COALESCE(col1, col2, col3, 0) AS result FROM table_name;
COALESCE จะคืนค่าแรกที่ไม่ใช่ NULL จากซ้ายไปขวา หากทุกค่าเป็น NULL จะคืนค่าสุดท้าย (0 ในตัวอย่าง)
ความแตกต่างระหว่าง IFNULL และ COALESCE
| คุณสมบัติ | IFNULL | COALESCE |
|---|---|---|
| จำนวนอาร์กิวเมนต์ | 2 ตัวเท่านั้น | 2 ตัวขึ้นไป |
| มาตรฐาน ANSI SQL | ไม่ใช่ (MySQL proprietary) | ใช่ (Standard SQL) |
| ประสิทธิภาพ | เร็วกว่าเล็กน้อย | ช้ากว่าเล็กน้อย |
แนวทางเลือก: ใช้ IFNULL สำหรับกรณีง่ายๆ 1 คอลัมน์ ใช้ COALESCE เมื่อต้องตรวจสอบหลายคอลัมน์หรือต้องการความเข้ากันได้กับฐานข้อมูลอื่น