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

Cập nhật chỉ các giá trị NULL trong cột MySQL với IFNULL

Giới thiệu

Hàm IFNULL(expr1, expr2) trả về expr1 nếu không phải NULL, ngược lại trả về expr2. Kết hợp với UPDATE để thay thế NULL bằng giá trị mặc định (0 trong ví dụ) mà không ảnh hưởng giá trị đã có.

Ví dụ thực hành

1. Tạo bảng DemoTable817

mysql> CREATE TABLE DemoTable817 (Value INT);

2. Chèn dữ liệu có NULL

mysql> INSERT INTO DemoTable817 VALUES (10),(NULL),(20),(NULL);

3. Cập nhật: NULL → 0, giữ nguyên giá trị khác

mysql> UPDATE DemoTable817 SET Value = IFNULL(Value, 0);

4. Kết quả

+-------+
| Value |
+-------+
|    10 |
|     0 |
|    20 |
|     0 |
+-------+

So sánh IFNULL, COALESCE, CASE

HàmCú phápĐặc điểm
IFNULLIFNULL(col, 0)Chỉ 2 đối số, MySQL-only
COALESCECOALESCE(col, 0)Chuẩn SQL, nhiều đối số: COALESCE(a,b,c,0)
CASECASE WHEN col IS NULL THEN 0 ELSE col ENDLinh hoạt nhất, chuẩn SQL

Cách thay thế khi SELECT (không sửa dữ liệu)

SELECT Id, IFNULL(Value, 0) AS Value FROM DemoTable817;
-- Hoặc
SELECT Id, COALESCE(Value, 0) AS Value FROM DemoTable817;

Lưu ý

  • UPDATE ... SET col = IFNULL(col, 0) chỉ cập nhật hàng có NULL (MySQL tối ưu: không ghi đè giá trị giống nhau).
  • Kết quả Rows matched: 4 Changed: 2 xác nhận chỉ 2 hàng NULL bị thay đổi.
  • Nên đặt DEFAULT 0 cho cột khi tạo bảng để tránh NULL ở bản ghi mới: Value INT DEFAULT 0.