Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Ánh xạ giá trị (map keys) trong SELECT MySQL với CASE / IF

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.