การจัดการค่า NULL ใน SQL Server : SQL
 

Blog :: SQL :: การจัดการค่า NULL ใน SQL Server

ค่า NULL (อ่านว่า นัล) คืออะไร

ในการเก็บข้อมูลบางครั้ง เรามักจะเจอค่า NULL ใน Table ดังรูป



Read more: http://www.webub.com/%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%88%E0%B8%B1%E0%B8%94%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%84%E0%B9%88%E0%B8%B2%20NULL%20%E0%B9%83%E0%B8%99%20SQL%20Server%20SQL%20Server-1287-21/
Engine by www.webUB.com
ค่า NULL (อ่านว่า นัล) คืออะไร ในการเก็บข้อมูลบางครั้ง เรามักจะเจอค่า NULL ใน Table ดังรูป

 
มีหลายท่านที่ไม่ทราบจริงๆ ว่าค่า NULL นั้นคือค่าอะไรกันแน่ ผมขออธิบายตรงนี้เลยนะครับว่า ค่า NULL คือ “ค่าที่ไม่ทราบ” หมายความว่า ไม่ทราบว่าเป็นค่าอะไร รวมถึงไม่ทราบด้วยว่าเป็น Data Type อะไร ซึ่งจะแตกต่างจากค่า 0 หรือ Empty String หรือ Zero Length String

0 นั้นจะทราบว่าเป็นค่าตัวเลขแต่เก็บค่า 0

     ส่วน Empty String หรือ Zero Length String นั้น เราก็จะทราบว่าเป็นข้อความครับ แต่ยังไม่ได้เก็บตัวอักษรอะไรเลยแม้แต่ตัวเดียว ซึ่งจะผิดกับ NULL อย่างแน่นอน เพราะทันทีที่เห็น NULL เราจะไม่ทราบจริงๆ ว่าเป็น data type อะไรกันแน่ครับ แล้วก็มาถึงคำถามที่ว่า ค่า NULL มีประโยชน์อะไร? น่าสนใจใช่ไหมหล่ะครับ

ประโยชน์ของค่า NULL

     จากประสบการณ์ใช้งานของผม ประโยชน์ของค่า NULL น่าจะเป็นการแสดงให้เห็นว่า ที่ช่องนี้ ยังไม่เคยมีการป้อนข้อมูลมาก่อน ซึ่งหมายความว่า ตั้งแต่ Record นี้ได้ถูกป้อนลงไป ยังไม่เคยมีใครเข้ามาแก้ไขข้อมูลในช่องนี้มาก่อนเลยครับ

การจัดการการแสดงผลของค่า NULL

     ในการ query data เพื่อที่จะออกรายงานนั้น user บางคนอาจจะไม่เข้าใจว่าค่า null นั้นหมายถึงอะไร เราสามารถจัดการแสดงผลเพื่อทำให้ user สามารถ อ่าน report ได้ง่ายขึ้น ดังตัวอย่างนี้ครับ



ในตัวอย่างนี้จะเป็นการจัดการแสดงผล โดยตรวจสอบว่าถ้ามี ค่า NULL เราจะนำค่า n/a มาแสดงแทน ดังผลลัพธ์



ปัญหาค่า NULL กับการหาค่าเฉลี่ย (Average)
 

เวลาที่เราต้องการที่จะหาค่าเฉลี่ย (Average) ถ้าใน Table เรามีค่า NULL อยู่ รับรองครับว่าจะมีปัญหาแน่นอน เนื่องจาก AVG() จะไม่ได้นำค่า null มาคิดด้วยครับ ซึ่งก็จะทำให้ผลลัพธ์ผิดไปด้วยแน่นอน ดังตัวอย่าง ซึ่งจะมีค่ามากกว่าความเป็นจริงครับ
 

 
ที่มา : http://www.webub.com
หัวข้อ : การจัดการค่า NULL ใน SQL Server

 

0 Comment

  • Have no comment.

Comment Blog

 
 
 
Share This Topic Login with Facebook