Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Trả về giá trị mặc định khi truy vấn MySQL không có kết quả (IFNULL)


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 COALESCE cho code chuẩn SQL, nhiều tham số.
  • Dùng IFNULL cho đơ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.