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

Chuyển NULL thành 0 trong MySQL: IFNULL() vs COALESCE()

2 hàm tương đương cho trường hợp 2 tham số

IFNULL() - MySQL specific

SELECT IFNULL(cot, 0) AS ten_alias FROM bang;

COALESCE() - ANSI SQL Standard

SELECT COALESCE(cot, 0) AS ten_alias FROM bang;

Ví dụ: Cột Salary có NULL

Dữ liệu

+----+-------+--------+
| Id | Name  | Salary |
+----+-------+--------+
| 1  | John  | NULL   |
| 2  | Carol | 5610   |
| 3  | Bob   | NULL   |
| 4  | David | NULL   |
+----+-------+--------+

IFNULL()

mysql> SELECT IFNULL(Salary, 0) AS CONVERT_NULL_TO_0 FROM convertNullToZeroDemo;
+--------------------+
| CONVERT_NULL_TO_0  |
+--------------------+
| 0                  |
| 5610               |
| 0                  |
| 0                  |
+--------------------+

COALESCE()

mysql> SELECT COALESCE(Salary, 0) AS CONVERT_NULL_TO_0 FROM convertNullToZeroDemo;
+--------------------+
| CONVERT_NULL_TO_0  |
+--------------------+
| 0                  |
| 5610               |
| 0                  |
| 0                  |
+--------------------+

So sánh chi tiết

Khi nào dùng cái nào?

  • IFNULL(): Code chỉ chạy MySQL, chỉ cần 2 giá trị, muốn tối ưu vi mô
  • COALESCE(): Code cần di động (PostgreSQL, SQL Server, Oracle...), cần fallback chain

Ứng dụng thực tế


                
            
            
             
Tiêu chíIFNULL(expr, val)COALESCE(expr1, expr2, ...)
Số tham sốChính xác 22 trở lên
Chuẩn SQLMySQL extensionANSI SQL (di động)
Logicexpr nếu không NULL, ngược lại valTrả về expr đầu tiên không NULL
Ví dụ mở rộngKhông thểCOALESCE(a, b, c, 0)
Hiệu năngHơi nhanh hơn (ít overhead)Chênh lệch 무시able