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

ทางเลือกแทน CASE WHEN ใน MySQL: ใช้ฟังก์ชัน IF()

ใน 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 ทางเลือก หรือต้องการตรวจสอบเงื่อนไขแบบซับซ้อน