ใช้ 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 ที่อ่านง่าย หรือคำนวณเงื่อนไขจากหลายคอลัมน์