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

Trả về 1 cho giá trị NOT NULL trong MySQL

Vấn đề: Chuyển đổi kiểm tra NULL thành cờ 1/0

Cần một cột chỉ báo (flag) bằng 1 nếu giá trị không phải NULL, 0 nếu là NULL.

Giải pháp: Hàm IF() kết hợp IS NOT NULL

Cú pháp: IF(expr IS NOT NULL, 1, 0).

1. Minh họa trực tiếp

SELECT IF('' IS NOT NULL, 1, 0); -- Chuỗi rỗng '' KHÔNG phải NULL -> trả về 1
+------------------------+
| IF('' IS NOT NULL,1,0) |
+------------------------+
|                      1 |
+------------------------+

2. Tạo bảng test

CREATE TABLE DemoTable (Name VARCHAR(20));
INSERT INTO DemoTable VALUES ('Chris'), (''), ('David'), (NULL);

3. Dữ liệu

+-------+
| Name  |
+-------+
| Chris |
|       |
| David |
| NULL  |
+-------+

4. Truy vấn gán cờ

SELECT IF(Name IS NOT NULL, 1, 0) AS Result FROM DemoTable;

5. Kết quả

+--------+
| Result |
+--------+
|      1 |  -- Chris
|      1 |  -- chuỗi rỗng ''
|      1 |  -- David
|      0 |  -- NULL
+--------+

Phân biệt quan trọng

  • NULL – Giá trị không xác định, thiếu dữ liệu. IS NULL / IS NOT NULL dùng để kiểm tra.
  • '' (chuỗi rỗng) – Là một giá trị chuỗi hợp lệ, độ dài 0. Khác NULL.
  • 0 (số không) – Cũng khác NULL.

Hàm tương tự

  • IFNULL(expr, default) – Trả về default nếu expr là NULL.
  • COALESCE(expr1, expr2, ...) – Trả về giá trị đầu tiên không NULL.
  • NULLIF(expr1, expr2) – Trả về NULL nếu expr1 = expr2.