Vấn đề: Tạo cột mô tả trạng thái: 'Student Name Found' / 'Student Name Is Not Found' dựa trên cột Name có NULL hay không
Giải pháp: IF(condition, true_val, false_val)
IF(expr IS NULL, 'Not Found', 'Found') – Trả về chuỗi tùy ý.
1. Tạo bảng và dữ liệu
CREATE TABLE DemoTable (StudentName VARCHAR(20));
INSERT INTO DemoTable VALUES ('Chris'), (NULL), ('David'), (NULL);
2. Truy vấn
SELECT StudentName,
IF(StudentName IS NULL, 'Student Name Is Not Found', 'Student Name Found') AS Name
FROM DemoTable;
3. Kết quả
+-------------+---------------------------+
| StudentName | Name |
+-------------+---------------------------+
| Chris | Student Name Found |
| NULL | Student Name Is Not Found |
| David | Student Name Found |
| NULL | Student Name Is Not Found |
+-------------+---------------------------+
So sánh IF vs CASE vs COALESCE
| Hàm | Dùng khi | Ví dụ |
|---|---|---|
IF(cond, t, f) | Đơn giản, 2 nhánh | IF(x>0, 'pos', 'neg') |
CASE WHEN ... THEN ... ELSE ... END | Nhiều điều kiện | Phân loại điểm A/B/C/F |
COALESCE(a,b,c) | Lấy giá trị đầu không NULL | COALESCE(nick, name, 'Guest') |
IFNULL(a,b) | MySQL-only, 2 đối số | IFNULL(col, 0) |