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

Thay thế "Empty set" bằng giá trị mặc định với COALESCE trong MySQL

Giới thiệu

Khi truy vấn không trả về hàng nào (Empty set), dùng COALESCE() trên hàm tập hợp (aggregate) để trả về giá trị mặc định thay vì NULL/rỗng.

1. Tạo bảng và dữ liệu

mysql> create table DemoTable (
    -> Code varchar(20)
    -> ); 
Query OK, 0 rows affected (1.64 sec)

mysql> insert into DemoTable values('10'); 
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values('45'); 
Query OK, 1 row affected (0.30 sec)
mysql> insert into DemoTable values('78'); 
Query OK, 1 row affected (0.21 sec)

2. Dữ liệu gốc

mysql> select *from DemoTable;
+------+
| Code |
+------+
| 10   |
| 45   |
| 78   |
+------+
3 rows in set (0.00 sec)

3. Truy vấn không khớp hàng nào (Code='90')

Bình thường:

mysql> select MAX(Code) from DemoTable where Code='90';
+-----------+
| MAX(Code) |
+-----------+
| NULL      |
+-----------+
1 row in set (0.00 sec)

Dùng COALESCE để thay NULL bằng 'false':

mysql> select COALESCE(MAX(Code), 'false') AS WhenReturnSetIsEmpty 
    -> from DemoTable 
    -> where Code='90';

4. Kết quả

+----------------------+
| WhenReturnSetIsEmpty |
+----------------------+
| false                |
+----------------------+
1 row in set (0.00 sec)

Giải thích:

  • MAX(Code) trên tập rỗng trả về NULL
  • COALESCE(val1, val2, ...) trả về giá trị đầu tiên không NULL
  • Kết quả: 'false' (chuỗi) thay vì NULL

Các trường hợp dùng COALESCE phổ biến:

  • SELECT COALESCE(column, 'N/A') FROM table: Hiển thị 'N/A' cho cột NULL
  • SELECT COALESCE(price, 0) FROM products: Giá NULL tính là 0
  • COALESCE(col1, col2, col3, 'default'): Ưu tiên cột nào có giá trị

Lưu ý: COALESCE là chuẩn SQL. MySQL cũng có IFNULL(expr1, expr2) (chỉ 2 tham số).