วันศุกร์ที่ 20 มิถุนายน พ.ศ. 2557

SQLServer : จัดการค่า NULL

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)



ไม่มีความคิดเห็น:

แสดงความคิดเห็น