แนวคิด
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 ยืดหยุ่นที่สุด สามารถใส่เงื่อนไขซับซ้อนได้หลายระดับ