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

MySQL กำหนดเงื่อนไขคอลัมน์ค่า 0/1 ด้วย CASE WHEN

ใช้ CASE WHEN ในคำสั่ง SELECT เพื่อสร้างคอลัมน์คำนวณ (Computed Column) ตามเงื่อนไขของคอลัมน์ที่มีค่า 0 หรือ 1

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

1. สร้างตารางมีคอลัมน์ 0/1 หลายคอลัมน์

mysql> CREATE TABLE DemoTable (
    Value1 INT,
    Value2 INT,
    Value3 INT,
    Value4 INT
);
Query OK, 0 rows affected (0.98 sec)

2. เพิ่มข้อมูลทดสอบ (ค่า 0 หรือ 1 เท่านั้น)

mysql> INSERT INTO DemoTable VALUES(1,0,1,1);
Query OK, 1 row affected (0.22 sec)
mysql> INSERT INTO DemoTable VALUES(1,0,1,0);
Query OK, 1 row affected (0.13 sec)
mysql> INSERT INTO DemoTable VALUES(1,1,1,1);
Query OK, 1 row affected (0.20 sec)
mysql> INSERT INTO DemoTable VALUES(0,0,0,0);
Query OK, 1 row affected (0.15 sec)

3. แสดงข้อมูลทั้งหมด

mysql> SELECT * FROM DemoTable;
+--------+--------+--------+--------+
| Value1 | Value2 | Value3 | Value4 |
+--------+--------+--------+--------+
|      1 |      0 |      1 |      1 |
|      1 |      0 |      1 |      0 |
|      1 |      1 |      1 |      1 |
|      0 |      0 |      0 |      0 |
+--------+--------+--------+--------+

4. ใช้ CASE WHEN ตรวจสอบผลรวม: ผลรวม < 2 = 'NotGood', ไม่เช่นนั้น = 'Good'

mysql> SELECT CASE WHEN Value1+Value2+Value3+Value4 < 2 THEN 'NotGood' ELSE 'Good' END AS Status FROM DemoTable;

5. ผลลัพธ์

+---------+
| Status  |
+---------+
| Good    |
| Good    |
| Good    |
| NotGood |
+---------+

รูปแบบ CASE WHEN

Simple CASE (เปรียบเทียบค่าเดียว)

CASE column
    WHEN value1 THEN result1
    WHEN value2 THEN result2
    ELSE default_result
END

Searched CASE (เงื่อนไขซับซ้อน) - ใช้ในตัวอย่างข้างต้น

CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ELSE default_result
END

ตัวอย่างเพิ่มเติม: แปลง 0/1 เป็น Yes/No

SELECT 
    Value1,
    CASE Value1 WHEN 1 THEN 'Yes' ELSE 'No' END AS Value1_Label,
    Value2,
    CASE Value2 WHEN 1 THEN 'Yes' ELSE 'No' END AS Value2_Label
FROM DemoTable;

สรุป

CASE WHEN ยืดหยุ่น สามารถเขียนเงื่อนไขซับซ้อนได้หลายระดับ ใช้ได้ใน SELECT, UPDATE, ORDER BY, GROUP BY และ WHERE เหมาะสำหรับแปลงค่า 0/1 ให้เป็น Label ที่อ่านง่าย หรือคำนวณเงื่อนไขจากหลายคอลัมน์