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.