Sử dụng hàm COALESCE() để chuyển NULL thành 0 trước khi cộng.
Tạo bảng demo
mysql> create table DemoTable (
Value1 int,
Value2 int
);
Query OK, 0 rows affected (0.51 sec)
Chèn dữ liệu có NULL
mysql> insert into DemoTable values(100, 200); Query OK, 1 row affected (0.27 sec) mysql> insert into DemoTable values(NULL, 90); Query OK, 1 row affected (0.13 sec) mysql> insert into DemoTable values(NULL, NULL); Query OK, 1 row affected (0.12 sec) mysql> insert into DemoTable values(600, NULL); Query OK, 1 row affected (0.12 sec)
Hiển thị dữ liệu gốc
mysql> select * from DemoTable;
Kết quả
+--------+--------+ | Value1 | Value2 | +--------+--------+ | 100 | 200 | | NULL | 90 | | NULL | NULL | | 600 | NULL | +--------+--------+ 4 rows in set (0.00 sec)
Truy vấn: COALESCE(Value, 0) + COALESCE(Value2, 0)
mysql> SELECT COALESCE(Value1, 0) + COALESCE(Value2, 0) AS Sum from DemoTable;
Kết quả - NULL được tính như 0
+------+ | Sum | +------+ | 300 | | 90 | | 0 | | 600 | +------+ 4 rows in set (0.00 sec)
Giải thích COALESCE(val1, val2, ...): Trả về giá trị đầu tiên KHÔNG NULL. COALESCE(NULL, 0) → 0.
Hàm tương tự: IFNULL(expr, 0) (chỉ 2 tham số, chỉ MySQL), ISNULL(expr) (trả về 1/0).
So sánh:
COALESCE: Chuẩn SQL, nhiều tham số, portable.IFNULL: Ngắn gọn, chỉ MySQL.CASE WHEN cot IS NULL THEN 0 ELSE cot END: Rõ ràng, verbose.
Ứng dụng: Tính tổng doanh thu, điểm số, số lượng khi dữ liệu có thể thiếu.