ฟังก์ชัน IFNULL()
IFNULL(expr1, expr2) คืนค่า expr1 หากไม่ใช่ NULL ไ้ฉะนั้นคืน expr2 ใช้สำหรับให้ค่า Default เมื่อ Subquery ไม่พบข้อมูล
ไวยากรณ์
SELECT IFNULL((subquery), 'default_value') AS result;
ตัวอย่างการใช้งาน
สร้างตารางและข้อมูล
CREATE TABLE IfNullDemo (Id INT, Name VARCHAR(100));
INSERT INTO IfNullDemo VALUES
(1, 'John'), (200, 'Sam'), (204, 'Carol'), (510, 'Johnson');
กรณีที่ 1: พบข้อมูล (Id = 200)
SELECT IFNULL((SELECT Id FROM IfNullDemo WHERE Id = 200), 'No Result Found') AS ResultFound;
+-------------+
| ResultFound |
+-------------+
| 200 |
+-------------+
กรณีที่ 2: ไม่พบข้อมูล (Id = 400)
SELECT IFNULL((SELECT Id FROM IfNullDemo WHERE Id = 400), 'No Result Found') AS ResultFound;
+-----------------+
| ResultFound |
+-----------------+
| No Result Found |
+-----------------+
ฟังก์ชันที่เกี่ยวข้อง
| ฟังก์ชัน | คำอธิบาย | รองรับมาตรฐาน SQL |
|---|---|---|
| IFNULL(expr1, expr2) | MySQL Specific | ไม่ใช่ |
| COALESCE(expr1, expr2, ...) | มาตรฐาน ANSI SQL รองรับหลายอาร์กิวเมนต์ | ใช่ |
| NULLIF(expr1, expr2) | คืน NULL หาก expr1 = expr2 | ใช่ |
ตัวอย่าง COALESCE (แนะนำ)
SELECT COALESCE((SELECT Id FROM IfNullDemo WHERE Id = 400), 'No Result Found') AS ResultFound;
ใช้กับ LEFT JOIN
SELECT u.name, IFNULL(p.total_orders, 0) AS order_count
FROM users u
LEFT JOIN (
SELECT user_id, COUNT(*) AS total_orders FROM orders GROUP BY user_id
) p ON u.id = p.user_id;