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 NULLdù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ềdefaultnếuexprlà NULL.COALESCE(expr1, expr2, ...)– Trả về giá trị đầu tiên không NULL.NULLIF(expr1, expr2)– Trả về NULL nếuexpr1 = expr2.