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

Cách tránh kết quả NULL khi dùng MAX() trên bảng rỗng trong MySQL

Vấn đề

Khi bảng trống, SELECT MAX(cot) FROM bang trả về NULL thay vì 0. Điều này gây khó khăn trong xử lý logic ứng dụng.

Giải pháp: Sử dụng COALESCE()

Hàm COALESCE() trả về giá trị đầu tiên không phải NULL trong danh sách tham số.

SELECT COALESCE(MAX(`ten_cot`), 0) FROM `ten_bang`;

Minh họa chi tiết

Tạo bảng và chèn dữ liệu

mysql> CREATE TABLE avoidNullDemo (`rank` INT);
mysql> INSERT INTO avoidNullDemo VALUES(10), (NULL), (20), (NULL), (100), (NULL);

Dữ liệu trong bảng

+------+
| rank |
+------+
| 10   |
| NULL |
| 20   |
| NULL |
| 100  |
| NULL |
+------+
6 rows in set (0.00 sec)

Truy vấn với COALESCE()

mysql> SELECT COALESCE(MAX(`rank`), 0) FROM avoidNullDemo;
+--------------------------+
| COALESCE(MAX(`rank`), 0) |
+--------------------------+
| 100                      |
+--------------------------+

Trường hợp bảng rỗng

mysql> TRUNCATE TABLE avoidNullDemo;
mysql> SELECT COALESCE(MAX(`rank`), 0) FROM avoidNullDemo;
+--------------------------+
| COALESCE(MAX(`rank`), 0) |
+--------------------------+
| 0                        |
+--------------------------+

Kết luận: COALESCE(MAX(cot), 0) đảm bảo luôn trả về số (0 khi bảng rỗng hoặc toàn NULL), giúp code ứng dụng an toàn hơn.