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

ใช้ CASE WHEN สำหรับการประเมิน Boolean ใน MySQL SELECT


แนวคิด

MySQL ไม่มี boolean type จริงๆ (ใช้ TINYINT(1) แทน) แต่สามารถแสดงผลเป็น 'true'/'false' กับ CASE WHEN ได้

รูปแบบคำสั่ง

SELECT col1, col2, 
       CASE WHEN col1 > col2 THEN 'true' ELSE 'false' END AS comparison_result
FROM yourTable;

ตัวอย่างเต็มรูปแบบ

1. สร้างตาราง

mysql> create table BooleanEvaluationDemo 
    -> ( 
    -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    -> FirstValue int, 
    -> SecondValue int 
    -> ); 
Query OK, 0 rows affected (0.71 sec)

2. เพิ่มข้อมูลทดสอบ

mysql> insert into BooleanEvaluationDemo(FirstValue,SecondValue) values(10,5); 
Query OK, 1 row affected (0.20 sec)
mysql> insert into BooleanEvaluationDemo(FirstValue,SecondValue) values(15,20); 
Query OK, 1 row affected (0.16 sec)
mysql> insert into BooleanEvaluationDemo(FirstValue,SecondValue) values(50,40); 
Query OK, 1 row affected (0.14 sec)
mysql> insert into BooleanEvaluationDemo(FirstValue,SecondValue) values(500,1000); 
Query OK, 1 row affected (0.13 sec)

3. ดูข้อมูลดิบ

mysql> select * from BooleanEvaluationDemo;
+----+------------+-------------+
| Id | FirstValue | SecondValue |
+----+------------+-------------+
| 1  | 10         | 5           |
| 2  | 15         | 20          |
| 3  | 50         | 40          |
| 4  | 500        | 1000        |
+----+------------+-------------+

4. ใช้ CASE WHEN ประเมิน Boolean

mysql> SELECT FirstValue, SecondValue,
    -> CASE WHEN FirstValue > SecondValue THEN 'true' ELSE 'false' END 
    -> AS FirstValuesGreaterThanSecond 
    -> FROM BooleanEvaluationDemo;
+------------+-------------+-------------------------------+
| FirstValue | SecondValue | FirstValuesGreaterThanSecond  |
+------------+-------------+-------------------------------+
| 10         | 5           | true                          |
| 15         | 20          | false                         |
| 50         | 40          | true                          |
| 500        | 1000        | false                         |
+------------+-------------+-------------------------------+

รูปแบบ CASE แบบสั้น (Simple CASE)

SELECT 
  FirstValue, 
  SecondValue,
  CASE FirstValue > SecondValue WHEN 1 THEN 'true' ELSE 'false' END AS result
FROM BooleanEvaluationDemo;

ใช้งานกับคอลัมน์ Boolean จริง (TINYINT)

SELECT 
  name, 
  is_active,
  CASE is_active WHEN 1 THEN 'Active' ELSE 'Inactive' END AS status
FROM users;

สรุป: CASE WHEN ยืดหยุ่นที่สุด สามารถใส่เงื่อนไขซับซ้อนได้หลายระดับ