ค่า 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”
