Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

วิธี Map ค่า (Key-Value) ในคอลัมน์เดียวด้วย CASE/IF ใน MySQL

ใช้ CASE WHEN หรือ IF() แปลงค่าในคอลัมน์ (เช่น 0/1) ให้เป็นข้อความที่อ่านง่าย (ENABLED/DISABLED)

วิธีที่ 1: ใช้ CASE WHEN

SELECT col1, col2,
       CASE WHEN flagColumn = 1 THEN 'ENABLED' ELSE 'DISABLED' END AS Status
FROM yourTable;

วิธีที่ 2: ใช้ IF()

SELECT col1, col2, IF(flagColumn, 'ENABLED', 'DISABLED') AS Status FROM yourTable;

ตัวอย่างการใช้งาน

สร้างตาราง MapKeys:

mysql> CREATE TABLE MapKeys (
    -> Id INT NOT NULL AUTO_INCREMENT,
    -> Name VARCHAR(20),
    -> isActive BOOLEAN,
    -> PRIMARY KEY(Id)
    -> );

เพิ่มข้อมูล:

mysql> INSERT INTO MapKeys(Name, isActive) VALUES('Larry',true),('David',false),('Mike',true),('Carol',false),('Sam',false),('Bob',true);

ข้อมูลเดิม (isActive = 1/0)

+----+-------+----------+
| Id | Name  | isActive |
+----+-------+----------+
| 1  | Larry | 1        |
| 2  | David | 0        |
| 3  | Mike  | 1        |
| 4  | Carol | 0        |
| 5  | Sam   | 0        |
| 6  | Bob   | 1        |
+----+-------+----------+

ใช้ CASE WHEN

mysql> 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  |
+----+-------+----------+

ใช้ IF() (สั้นกว่า)

mysql> SELECT Id, Name, IF(isActive, 'ENABLED', 'DISABLED') 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  |
+----+-------+----------+

ประโยชน์: แสดงผลให้ User/Others อ่านเข้าใจง่ายกว่า 0/1