Sử dụng hàm IFNULL() (hoặc COALESCE()) để thay thế NULL bằng 0 trước khi thực hiện phép toán.
Tạo bảng
mysql> CREATE TABLE DemoTable (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Value1 INT,
-> Value2 INT
-> );
Chèn dữ liệu có NULL
mysql> INSERT INTO DemoTable(Value1, Value2) VALUES(10, 20); mysql> INSERT INTO DemoTable(Value1, Value2) VALUES(NULL, NULL); mysql> INSERT INTO DemoTable(Value1, Value2) VALUES(40, NULL);
Xem dữ liệu gốc
mysql> SELECT * FROM DemoTable;
+----+--------+--------+ | Id | Value1 | Value2 | +----+--------+--------+ | 1 | 10 | 20 | | 2 | NULL | NULL | | 3 | 40 | NULL | +----+--------+--------+
Cộng hai cột, xử lý NULL = 0
mysql> SELECT IFNULL(Value1, 0) + IFNULL(Value2, 0) AS NULL_AS_ZERO FROM DemoTable;
+--------------+ | NULL_AS_ZERO | +--------------+ | 30 | | 0 | | 40 | +--------------+
IFNULL() vs COALESCE()
| Hàm | Số tham số | Chuẩn SQL | Ví dụ |
|---|---|---|---|
| IFNULL(expr, val) | 2 | MySQL proprietary | IFNULL(col, 0) |
| COALESCE(val1, val2, ...) | 2+ | ANSI SQL | COALESCE(col1, col2, 0) |
Khuyên dùng COALESCE() vì tuân thủ chuẩn SQL và linh hoạt hơn (nhiều fallback).
Ứng dụng thực tế