ใน MySQL สามารถใช้ฟังก์ชัน IF() เป็นทางเลือกแทนคำสั่ง CASE WHEN ได้ โดยเฉพาะกรณีที่มีเงื่อนไขเพียง 2 ทางเลือก (True/False) จะทำให้โค้ดสั้นและอ่านง่ายกว่า
Syntax ของฟังก์ชัน IF()
IF(condition, value_if_true, value_if_false)
ตัวอย่างการใช้งาน
1. สร้างตารางและเพิ่มข้อมูล
mysql> create table DemoTable1593 ( PlayerScore int ); Query OK, 0 rows affected (0.44 sec) mysql> insert into DemoTable1593 values(78); Query OK, 1 row affected (0.11 sec) mysql> insert into DemoTable1593 values(0); Query OK, 1 row affected (0.14 sec) mysql> insert into DemoTable1593 values(89); Query OK, 1 row affected (0.12 sec) mysql> insert into DemoTable1593 values(0); Query OK, 1 row affected (0.16 sec)
ข้อมูลทั้งหมด:
mysql> select * from DemoTable1593;
+-------------+ | PlayerScore | +-------------+ | 78 | | 0 | | 89 | | 0 | +-------------+ 4 rows in set (0.00 sec)
2. ใช้ IF() แทน CASE WHEN
ต้องการ: ถ้า PlayerScore = 0 ให้แสดงค่าว่าง ('') มิฉะนั้นให้แสดงค่า PlayerScore
mysql> select if(PlayerScore=0, '', PlayerScore) from DemoTable1593;
ผลลัพธ์:
+----------------------------------+ | if(PlayerScore=0,'',PlayerScore) | +----------------------------------+ | 78 | | | | 89 | | | +----------------------------------+ 4 rows in set (0.00 sec)
เปรียบเทียบ IF() กับ CASE WHEN
| ลักษณะ | IF() | CASE WHEN |
|---|---|---|
| จำนวนเงื่อนไข | 2 ทางเลือก (True/False) | หลายเงื่อนไขได้ |
| ความซับซ้อน | เรียบง่าย | ซับซ้อนกว่า |
| ความยืดหยุ่น | น้อยกว่า | มากกว่า |
| ประสิทธิภาพ | เท่าเทียมกัน | เท่าเทียมกัน |
ตัวอย่าง CASE WHEN เทียบเท่า
SELECT CASE WHEN PlayerScore = 0 THEN '' ELSE PlayerScore END FROM DemoTable1593;
สรุป: ใช้ IF() เมื่อมีเงื่อนไขแค่ 2 ทางเลือก จะทำให้ Query สั้นและอ่านง่ายกว่า ใช้ CASE WHEN เมื่อมีเงื่อนไขมากกว่า 2 ทางเลือก หรือต้องการตรวจสอบเงื่อนไขแบบซับซ้อน