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

Cộng hai cột coi NULL như 0 trong MySQL

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.