Hàm IF() trong MySQL
Cú pháp: IF(condition, true_value, false_value) - trả về true_value nếu condition TRUE, ngược lại false_value.
Ví dụ
Tạo bảng điểm:
CREATE TABLE DemoTable612 (
Number1 INT,
Number2 INT,
Score INT
);
INSERT INTO DemoTable612 VALUES
(10, 20, 1000),
(30, 40, 500),
(50, 70, 1200),
(100, 120, 400);
Tính Result: Nếu Score > 500 thì nhân 2 số, ngược lại cộng 2 số:
SELECT *,
IF(Score > 500, Number1 * Number2, Number1 + Number2) AS Result
FROM DemoTable612;
Kết quả:
+---------+---------+-------+--------+
| Number1 | Number2 | Score | Result |
+---------+---------+-------+--------+
| 10 | 20 | 1000 | 200 |
| 30 | 40 | 500 | 70 |
| 50 | 70 | 1200 | 3500 |
| 100 | 120 | 400 | 220 |
+---------+---------+-------+--------+
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 |
| Độ đọc | Tốt cho điều kiện đơn | Tốt cho logic nhiều nhánh |
| Lồng nhau | Khó đọc | Dễ quản lý |
Ví dụ CASE WHEN tương đương
SELECT *,
CASE
WHEN Score > 500 THEN Number1 * Number2
ELSE Number1 + Number2
END AS Result
FROM DemoTable612;
Ứng dụng thực tế
- Phân loại dữ liệu:
IF(score >= 60, 'Pass', 'Fail'). - Tính giá khuyến mãi:
IF(qty > 100, price * 0.9, price). - Chuyển đổi giá trị:
IF(status = 1, 'Active', 'Inactive'). - Kết hợp nhiều điều kiện:
IF(a > b AND c < d, 'X', 'Y').
Lưu ý
IF()là function,IFtrong stored program là statement (có THEN/END IF).- Tránh lồng IF() quá sâu → dùng CASE.
- NULL trong condition:
IF(NULL, ...)luôn trả về false_value.