Sử dụng IF() trong SELECT để trả về nhãn chuỗi theo điều kiện
Hàm IF(condition, true_value, false_value) trong MySQL cho phép trả về giá trị khác nhau (kể cả chuỗi) dựa trên điều kiện, trực tiếp trong danh sách SELECT.
1. Tạo bảng và chèn dữ liệu
mysql> CREATE TABLE DemoTable (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
EmployeeSalary INT
);
mysql> INSERT INTO DemoTable (EmployeeSalary) VALUES
(12000), (20000), (11500), (15500);
2. Xem dữ liệu
mysql> SELECT * FROM DemoTable;
+----+----------------+ | Id | EmployeeSalary | +----+----------------+ | 1 | 12000 | | 2 | 20000 | | 3 | 11500 | | 4 | 15500 | +----+----------------+
3. Truy vấn: Phân loại nhân viên theo lương
mysql> SELECT Id,
IF(EmployeeSalary <= 12000, 'Internship Employee', 'FullTime Employee') AS status
FROM DemoTable;
4. Kết quả
+----+---------------------+ | Id | status | +----+---------------------+ | 1 | Internship Employee | | 2 | FullTime Employee | | 3 | Internship Employee | | 4 | FullTime Employee | +----+---------------------+
Giải thích:
- Id=1: 12000 ≤ 12000 → 'Internship Employee'
- Id=2: 20000 > 12000 → 'FullTime Employee'
- Id=3: 11500 ≤ 12000 → 'Internship Employee'
- Id=4: 15500 > 12000 → 'FullTime Employee'
So sánh IF() vs CASE WHEN:
| Đặc điểm | IF() | CASE WHEN |
|---|---|---|
| Số nhánh | 2 (true/false) | Nhiều (WHEN...THEN...ELSE) |
| Độ phức tạp | Đơn giản | Phức tạp |
| Tiêu chuẩn SQL | MySQL extension | ANSI SQL standard |
| Lồng nhau | Khó đọc | Dễ đọc hơn |
Ví dụ CASE WHEN tương đương:
SELECT Id,
CASE
WHEN EmployeeSalary <= 12000 THEN 'Internship Employee'
ELSE 'FullTime Employee'
END AS status
FROM DemoTable;
Lưu ý: IF() khác với câu lệnh IF ... THEN ... END IF trong stored program (procedure/function/trigger).