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

Cơ chế COALESCE trong MySQL: Ưu tiên giá trị NON-NULL đầu tiên

Hàm COALESCE(): Trả về tham số NOT NULL đầu tiên

COALESCE(val1, val2, ..., valN) duyệt các tham số từ trái sang phải, trả về giá trị đầu tiên không phải NULL. Nếu tất cả NULL, trả về NULL.

1. Tạo bảng và chèn dữ liệu

mysql> CREATE TABLE DemoTable (
    Number1 INT,
    Number2 INT
);
mysql> INSERT INTO DemoTable VALUES
    (100, 200), (NULL, 50), (10, NULL), (NULL, NULL);

2. Xem dữ liệu

mysql> SELECT * FROM DemoTable;
+---------+---------+
| Number1 | Number2 |
+---------+---------+
| 100     | 200     |
| NULL    | 50      |
| 10      | NULL    |
| NULL    | NULL    |
+---------+---------+

3. Truy vấn: COALECE(Number1, Number2)

mysql> SELECT COALESCE(Number1, Number2) AS NON_NULL_ARGUMENT_FIRST
    FROM DemoTable;

4. Kết quả

+-------------------------+
| NON_NULL_ARGUMENT_FIRST |
+-------------------------+
| 100                     |
| 50                      |
| 10                      |
| NULL                    |
+-------------------------+

Phân tích từng hàng:

  1. (100, 200): Number1=100 (NOT NULL) → trả về 100
  2. (NULL, 50): Number1=NULL → kiểm tra Number2=50 → trả về 50
  3. (10, NULL): Number1=10 (NOT NULL) → trả về 10
  4. (NULL, NULL): Cả hai NULL → trả về NULL

So sánh COALESCE vs IFNULL vs NULLIF:

HàmSố tham sốHành vi
COALESCE(a,b,c...)2+Trả về NOT NULL đầu tiên
IFNULL(a,b)2Trả về a nếu NOT NULL, ngược lại b
NULLIF(a,b)2Trả về NULL nếu a=b, ngược lại a

Ứng dụng phổ biến: Thay thế NULL bằng giá trị mặc định: COALESCE(phone, email, 'N/A')