Dùng CASE WHEN ... THEN ... ELSE ... END hoặc IF() để chuyển mã code (1/0, 'Y'/'N'...) thành nhãn đọc được ('ENABLED'/'DISABLED').
Cách 1: CASE WHEN (chuẩn SQL, linh hoạt nhiều nhánh)
SELECT cot1, cot2,
CASE WHEN cot_trang_thai = 1 THEN 'ENABLED' ELSE 'DISABLED' END AS Status
FROM ten_bang;
Cách 2: IF() (ngắn gọn, chỉ 2 nhánh)
SELECT cot1, cot2, IF(cot_trang_thai, 'ENABLED', 'DISABLED') AS Status
FROM ten_bang;
Ví dụ minh họa
Tạo bảng MapKeys:
CREATE TABLE MapKeys (
Id INT NOT NULL AUTO_INCREMENT,
Name VARCHAR(20), isActive BOOLEAN, PRIMARY KEY (Id)
);
INSERT INTO MapKeys (Name, isActive) VALUES
('Larry',true), ('David',false), ('Mike',true), ('Carol',false), ('Sam',false), ('Bob',true);
Kết quả CASE
SELECT Id, Name,
CASE WHEN isActive = 1 THEN 'ENABLED' ELSE 'DISABLED' END AS Status
FROM MapKeys;
+----+-------+----------+
| Id | Name | Status |
+----+-------+----------+
| 1 | Larry | ENABLED |
| 2 | David | DISABLED |
| 3 | Mike | ENABLED |
| 4 | Carol | DISABLED |
| 5 | Sam | DISABLED |
| 6 | Bob | ENABLED |
+----+-------+----------+
Kết quả IF (giống hệt)
SELECT Id, Name, IF(isActive, 'ENABLED', 'DISABLED') AS Status FROM MapKeys;
Khi nào dùng cái nào?
IF(): 2 nhánh, ngắn gọn.CASE: ≥3 nhánh, hoặc logic phức tạp, hoặc chuẩn ANSI SQL.