ใช้ CASE WHEN ร่วมกับ MODULO (%) เพื่อตรวจสอบว่า ID เป็นเลขคี่หรือคู่
สร้างตารางตัวอย่าง
mysql> create table DemoTable (
PageId int );
Query OK, 0 rows affected (0.85 sec)
เพิ่มข้อมูลตัวอย่าง
mysql> insert into DemoTable values(233); Query OK, 1 row affected (0.36 sec) mysql> insert into DemoTable values(34); Query OK, 1 row affected (0.10 sec) mysql> insert into DemoTable values(76); Query OK, 1 row affected (0.11 sec) mysql> insert into DemoTable values(89); Query OK, 1 row affected (0.26 sec)
แสดงข้อมูลทั้งหมด
mysql> select *from DemoTable;
+--------+ | PageId | +--------+ | 233 | | 34 | | 76 | | 89 | +--------+ 4 rows in set (0.00 sec)
คิวรี่ CASE WHEN แสดงคี่/คู่
mysql> select PageId, case when PageId %2 !=0 then 'PageId is odd' else 'PageId is even' end AS Result from DemoTable;
ผลลัพธ์:
+--------+----------------+ | PageId | Result | +--------+----------------+ | 233 | PageId is odd | | 34 | PageId is even | | 76 | PageId is even | | 89 | PageId is odd | +--------+----------------+ 4 rows in set (0.00 sec)
คำอธิบาย
PageId % 2- Modulo operator คืนค่าเศษจากการหาร 2!= 0- เศษไม่ใช่ 0 = เลขคี่= 0- เศษเป็น 0 = เลขคู่
รูปแบบ CASE WHEN ทั้งสองแบบ
-- Searched CASE (ใช้ในตัวอย่าง) CASE WHEN condition THEN result ELSE default END -- Simple CASE CASE PageId % 2 WHEN 1 THEN 'Odd' ELSE 'Even' END
การใช้งานอื่นๆ
- Zebra Striping: เรียงสีสลับในรายงาน
CASE WHEN ROW_NUMBER() OVER() % 2 = 0 THEN 'even' ELSE 'odd' END - Pagination: แยกหน้าคู่/คี่
- Distribution: แจกงานให้ Worker สลับกัน