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

Cách xử lý NULL như 0 và cộng các cột trong MySQL?

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àmSố tham sốChuẩn SQLVí dụ
IFNULL(expr, val)2MySQL proprietaryIFNULL(col, 0)
COALESCE(val1, val2, ...)2+ANSI SQLCOALESCE(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ế