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

คืนค่า Default เมื่อ Query ไม่พบข้อมูลใน MySQL ใช้ IFNULL


ฟังก์ชัน 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;