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

Cập nhật NULL thành 1 trong MySQL (IFNULL + UPDATE)

Vấn đề: Thay thế giá trị NULL trong cột số bằng 1 (hoặc giá trị khác)

Giải pháp: UPDATE với IFNULL()

IFNULL(expr, default) trả về default nếu expr là NULL.

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

CREATE TABLE DemoTable (Counter INT);
INSERT INTO DemoTable VALUES (20), (NULL), (99), (49), (NULL);

2. Dữ liệu trước

+---------+
| Counter |
+---------+
|      20 |
|    NULL |
|      99 |
|      49 |
|    NULL |
+---------+

3. Cập nhật NULL → 1

UPDATE DemoTable 
SET Counter = IFNULL(Counter, 0) + 1 
WHERE Counter IS NULL;

IFNULL(Counter, 0) chuyển NULL thành 0, +1 = 1. WHERE Counter IS NULL chỉ cập nhật hàng NULL (tối ưu).

4. Kết quả

+---------+
| Counter |
+---------+
|      20 |
|       1 |
|      99 |
|      49 |
|       1 |
+---------+

Các hàm xử lý NULL tương tự

HàmMô tảVí dụ
IFNULL(a, b)Trả b nếu a=NULL (2 args, MySQL)IFNULL(col, 0)
COALESCE(a, b, c...)Trả giá trị đầu không NULL (ANSI, n args)COALESCE(a, b, 0)
NULLIF(a, b)Trả NULL nếu a=bNULLIF(col, 0)
IS NULL / IS NOT NULLKiểm tra NULL (không dùng = NULL)WHERE col IS NULL

Lưu ý

  • Luôn có WHERE Counter IS NULL để tránh cập nhật toàn bảng (tốn ресурс, ghi binlog).
  • Nếu muốn đặt NULL thành giá trị cố định: SET Counter = 1 WHERE Counter IS NULL (đơn giản hơn).
  • IFNULL(Counter, 0) + 1 hữu ích khi logic: "nếu NULL thì coi như 0, rồi cộng 1".