ฟังก์ชัน IF() ใน MySQL ใช้สำหรับประเมินเงื่อนไข (condition) และคืนค่าตามผลของเงื่อนไขนั้น ทำหน้าที่เหมือน IF-THEN-ELSE ในภาษาโปรแกรมทั่วไป โดยจะคืนค่าแรกถ้าเงื่อนไขเป็นจริง (TRUE) และคืนค่าอื่นหากเงื่อนไขเป็นเท็จ (FALSE) เหมาะสำหรับกรณีที่ต้องการแสดงผลต่างกันตามเงื่อนไข ภายในคำสั่ง SQL เช่น ใน SELECT, WHERE, ORDER BY หรือ UPDATE
ประโยชน์ของฟังก์ชัน IF()
- ใช้ประเมินเงื่อนไขง่าย ๆ แบบ 2 ทาง (TRUE/FALSE)
- ใช้สร้างคอลัมน์แสดงผลลัพธ์ที่ต่างกันตามเงื่อนไข
- ใช้ในการจัดรูปแบบข้อมูล, แปลงค่าตัวเลขเป็นข้อความ เช่น แสดงเกรด, สถานะ
- ใช้ใน
UPDATE,INSERT,SELECT, หรือแม้แต่ORDER BY - ช่วยลดการใช้
CASEสำหรับเงื่อนไขที่ไม่ซับซ้อน
รูปแบบการใช้งาน
IF(condition, true_value, false_value)
conditionคือเงื่อนไขที่ต้องการตรวจสอบ (เช่นscore >= 50)true_valueคือค่าที่ส่งคืนถ้าเงื่อนไขเป็นจริงfalse_valueคือค่าที่ส่งคืนถ้าเงื่อนไขเป็นเท็จ
ตัวอย่างการใช้งาน
SQL
SELECT IF(10 > 5, 'ถูกต้อง', 'ไม่ถูกต้อง') AS result;
-- ผลลัพธ์: 'ถูกต้อง'SQL
SELECT IF(score >= 50, 'ผ่าน', 'ไม่ผ่าน') AS status
FROM students;สมมติมีตารางชื่อ students ซึ่งเก็บข้อมูลดังนี้
| student_id | name | score |
|---|---|---|
| 1 | Somchai | 82 |
| 2 | Arisa | 47 |
| 3 | John | 75 |
| 4 | Sara | 33 |
แสดงสถานะผ่าน/ไม่ผ่านจากคะแนน
SQL
SELECT student_id, name, score,
IF(score >= 50, 'ผ่าน', 'ไม่ผ่าน') AS result
FROM students;ผลลัพธ์
| student_id | name | score | result |
|---|---|---|---|
| 1 | Somchai | 82 | ผ่าน |
| 2 | Arisa | 47 | ไม่ผ่าน |
| 3 | John | 75 | ผ่าน |
| 4 | Sara | 33 | ไม่ผ่าน |
หมายเหตุ
- ฟังก์ชัน
IF()รองรับเพียง 2 เงื่อนไขเท่านั้น ถ้าต้องการเงื่อนไขหลายทาง ให้ใช้CASEแทน - ค่าที่คืนควรเป็นชนิดข้อมูลเดียวกัน (text กับ text, int กับ int) เพื่อป้องกัน error หรือการแปลงค่าที่ไม่พึงประสงค์
conditionที่ระบุควรให้ผลลัพธ์เป็น TRUE/FALSE เท่านั้น- หากเงื่อนไขประเมินไม่ได้หรือค่าที่เปรียบเทียบเป็น
NULLโดยไม่มีการจัดการก่อน อาจได้ผลลัพธ์เป็นNULL