Sử dụng hàm IF()
Cú pháp: IF(condition, true_value, false_value).
Ví dụ
Tạo bảng:
CREATE TABLE DemoTable637 (
ClientId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
ClientName VARCHAR(100),
ClientAge INT
);
INSERT INTO DemoTable637(ClientName, ClientAge) VALUES
('Chris', 23), ('Robert', 24), ('David', 57), ('Carol', 60);
Hiển thị tên nếu (ClientName NOT NULL AND ClientAge > 50), ngược lại hiển thị dashes:
SELECT IF(ClientName IS NOT NULL AND ClientAge > 50, ClientName, '-------------')
FROM DemoTable637;
Kết quả:
+--------------------------------------------------------------------------+
| if(ClientName IS NOT NULL AND ClientAge > 50, ClientName, '-------------') |
+--------------------------------------------------------------------------+
| ------------- |
| ------------- |
| David |
| Carol |
+--------------------------------------------------------------------------+
Phân tích
- Chris (23), Robert (24): Age ≤ 50 → FALSE → hiển thị dashes.
- David (57), Carol (60): Age > 50 VÀ Name NOT NULL → TRUE → hiển thị tên.
Mở rộng: CASE WHEN (linh hoạt hơn)
SELECT CASE
WHEN ClientName IS NULL THEN 'No Name'
WHEN ClientAge > 60 THEN CONCAT('Senior: ', ClientName)
WHEN ClientAge > 50 THEN CONCAT('Veteran: ', ClientName)
ELSE ClientName
END AS display_name
FROM DemoTable637;
Ứng dụng thực tế
- Data masking: IF(sensitive, '***', value).
- Conditional formatting: IF(status=1, '✓ Active', '✗ Inactive').
- Default value: IF(col IS NULL OR col='', 'N/A', col).
- Business rules: IF(age>=18, 'Adult', 'Minor').
Lưu ý
IF()là function (expression), khác vớiIF ... THEN ... END IFstatement trong stored program.- Kiểu trả về: MySQL suy luận từ true/false value (ưu tiên string > number > date).
- NULL trong condition → FALSE branch.