NULL เป็นปัญหาถ้าไม่จัดการให้ดี
SELECT unit * quantity AS total FROM .....มีปัญหาเกิด error ถ้าค่า unit หรือ quantity เป็นค่า NULL
วิธีแก้
1. ตอน design table ให้กำหนดค่า Default value=0 และ ห้ามเป็นค่า NULL (Allow Nulls=false)
2. หรือใช้ function ช่วย
2.1 ISNULL(fieldname, value_replace_IF_null)
เช่น
SELECT (ISNULL(unit,0) * ISNULL(quantity,0)) AS total FROM.......
2.2 COALESCE(express1,express2, ....) คืนค่า express ตัวแรกที่ไม่ใช่ค่า NULL หรือ
คืนค่า NULL ถ้า express ทั้งหมดเป็นค่า NULL
เช่น
SELECT COALESCE(NULL,NULL,300,200,NULL) จะได้ค่า 300
จากตัวอย่างข้างบน
SELECT (COALESCE(unit,0) * COALESCE(quantity,0)) AS total FROM.......
นอกจากนี้ยังมีปัญหาการทดสอบค่า NULL
....WHERE unit_code <> NULL จะใช้ไม่ได้ต้องเขียนแบบนี้
.... WHERE unit_code IS NOT NULL หรือ
.......WHERE NOT ISNULL(unit_code)
ไม่มีความคิดเห็น:
แสดงความคิดเห็น