MySQL การใช้งานฟังก์ชัน NULLIF()

ฟังก์ชัน NULLIF() ใน MySQL ใช้เพื่อตรวจสอบว่า ค่าทั้งสองค่าที่ระบุมีค่าเท่ากันหรือไม่ หากทั้งสองค่าเท่ากันจะคืนค่า NULL หากไม่เท่ากัน จะคืนค่าแรก (expr1)

ฟังก์ชันนี้เหมาะสำหรับใช้ในการป้องกันการหารด้วยศูนย์, การเปรียบเทียบที่ควรส่ง NULL แทนค่าจริง หรือใช้ในการจัดการเงื่อนไขพิเศษต่าง ๆ

ประโยชน์ของฟังก์ชัน NULLIF()

  • ใช้เพื่อหลีกเลี่ยงการหารด้วย 0 โดยให้คืน NULL แทน
  • ใช้ในการเปรียบเทียบค่าและกำหนด NULL แทนค่าที่ไม่ต้องการให้แสดงผล
  • ใช้ร่วมกับ COALESCE() และ IFNULL() เพื่อจัดการลำดับความสำคัญของค่าข้อมูล
  • เหมาะกับการทำ logic control ภายใน SELECT, WHERE, CASE
  • ลดการใช้ IF(expr1 = expr2, NULL, expr1) ให้ง่ายขึ้นด้วยรูปแบบเดียว

รูปแบบการใช้งาน

NULLIF(expr1, expr2)
  • expr1 คือค่าที่จะเปรียบเทียบและคืนกลับหากไม่เท่ากัน
  • expr2 คือค่าที่ใช้เปรียบเทียบกับ expr1
    • ถ้า expr1 = expr2 จะคืนค่า NULL
    • ถ้า expr1 ≠ expr2 จะคืนค่า expr1

ตัวอย่างการใช้งาน

SQL
SELECT NULLIF(10, 10) AS result;  -- คืนค่า: NULL

SELECT NULLIF(10, 5) AS result;   -- คืนค่า: 10

สมมติว่ามีตารางชื่อ scores ซึ่งเก็บข้อมูลดังนี้

student_id name score max_score
1Somchai80100
2Arisa100100
3John9095
4Sara00

ตรวจสอบว่าคะแนนมีค่าเท่ากับคะแนนเต็มหรือไม่ ถ้าเท่ากันให้แสดง NULL

SQL
SELECT student_id, name, score, max_score,
       NULLIF(score, max_score) AS score_if_not_full
FROM scores;

ผลลัพธ์

student_id name score max_score score_if_not_full
1Somchai8010080
2Arisa100100NULL
3John909590
4Sara00NULL

หมายเหตุ

  • NULLIF() คืนค่า NULL เมื่อค่าทั้งสองเท่ากัน อย่าใช้ในกรณีที่ต้องการแสดงค่าเดิมหากเท่ากัน
  • หากค่าที่เปรียบเทียบอย่างใดอย่างหนึ่งเป็น NULL จะไม่ถือว่า “เท่ากัน” ผลลัพธ์จะเป็นค่าที่ไม่ใช่ NULL
  • ใช้ NULLIF() กับค่าที่เป็น 0 ต้องระวังผลลัพธ์อาจทำให้การคำนวณบางประเภท เช่น การหาร คืนค่า NULL
  • ใช้เพื่อป้องกันการหารด้วยศูนย์ ต้องใช้ร่วมกับ IFNULL() หรือ COALESCE() ต่อเพื่อจัดการผลลัพธ์ที่เป็น NULL
แชร์เรื่องนี้