MySQL การใช้โอเปอเรเตอร์ IS NULL และ IS NOT NULL

ค่า NULL คือค่าที่ไม่สามารถระบุได้ว่าเป็นอะไรกันแน่ ไม่ใช่ค่า 0 ไม่ใช่ค่าว่าง แต่เป็นค่าที่ยังไม่ได้ระบุ ดังนั้น เราไม่สามารถจะเปรียบเทียบค่าที่เป็น NULL ด้วยโอเปอเรเตอร์สำหรับเปรียบเทียบทั่วไป เช่น <, >, =, <> เป็นต้น

กรณีที่ต้องการเปรียบเทียบฟีลด์ที่มีค่าเป็น NULL เราต้องใช้โอเปอเรเตอร์ IS NULL หรือ IS NOT NULL แทน

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

ผมจะยกตัวอย่างการใช้งานด้วยตาราง address ในฐานข้อมูล sakila นะครับ

ค้นหาข้อมูลที่ ไม่มี address2

SQL
SELECT address, address2
FROM address
WHERE address2 IS NULL;
  • WHERE address2 IS NULL แสดงเฉพาะที่อยู่ที่ไม่ได้ระบุ address2

ค้นหาที่อยู่ที่มีการระบุ postal_code

SQL
SELECT address, postal_code
FROM address
WHERE postal_code IS NOT NULL;
  • WHERE postal_code IS NOT NULL แสดงเฉพาะที่อยู่ที่มีรหัสไปรษณีย์

แสดงข้อความแทน NULL ด้วย IFNULL()

SQL
SELECT address, IFNULL(address2, 'ไม่มีข้อมูลเพิ่มเติม') AS full_address
FROM address;
  • หาก address2 เป็น NULL จะแสดงคำว่า “ไม่มีข้อมูลเพิ่มเติม”

ใช้ COALESCE() แทนค่าจากหลายตัวเลือก

SQL
SELECT COALESCE(postal_code, '00000') AS zip
FROM address;
  • ถ้า postal_code เป็น NULL จะแทนด้วย “00000”
แชร์เรื่องนี้