Sử dụng IFNULL(expr, default_value) để trả về giá trị thay thế khi biểu thức là NULL (kết quả rỗng).
Cú pháp
SELECT IFNULL((SELECT column FROM table WHERE condition), 'default_value') AS result;
Ví dụ minh họa
mysql> CREATE TABLE IfNullDemo (Id INT, Name VARCHAR(100)); Query OK, 0 rows affected (0.60 sec) mysql> INSERT INTO IfNullDemo VALUES (1,'John'), (200,'Sam'), (204,'Carol'), (510,'Johnson'); Query OK, 4 rows affected
Truy vấn có kết quả (Id=200):
mysql> SELECT IFNULL((SELECT Id FROM IfNullDemo WHERE Id = 200), 'No Result Found') AS ResultFound; +-------------+ | ResultFound | +-------------+ | 200 | +-------------+
Truy vấn không có kết quả (Id=400):
mysql> SELECT IFNULL((SELECT Id FROM IfNullDemo WHERE Id = 400), 'No Result Found') AS ResultFound; +-----------------+ | ResultFound | +-----------------+ | No Result Found | +-----------------+
Các hàm liên quan
| Hàm | Cú pháp | Mô tả |
|---|---|---|
| IFNULL | IFNULL(expr, val) | Trả về val nếu expr là NULL (MySQL) |
| COALESCE | COALESCE(val1, val2, ...) | Trả về giá trị đầu tiên không NULL (chuẩn SQL) |
| NULLIF | NULLIF(expr1, expr2) | Trả về NULL nếu expr1 = expr2 |
| IF | IF(condition, true_val, false_val) | Điều kiện tùy ý |
Khuyến nghị
- Dùng
COALESCEcho code chuẩn SQL, nhiều tham số. - Dùng
IFNULLcho đơn giản, 2 tham số, MySQL-only. - Subquery trong IFNULL phải trả về tối đa 1 hàng (scalar subquery), nếu không báo lỗi.