ผู้เขียน หัวข้อ: 'NULL'&'null'&'' ในฐานข้อมูล  (อ่าน 1189 ครั้ง)

0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

admin

  • Administrator
  • Hero Member
  • *****
  • กระทู้: 2591
  • คนดีไม่เบ่ง คนเก่งไม่โม้ คนใหญ่โตไม่อวด
    • ดูรายละเอียด
    • อีเมล์
ขอ อธิบาย คำว่า NULL , null และ "" (ไม่มีข้อความอะไร) ครับ
คำว่า NULL คือ ตัวฐานข้อมูลกำหนดมาว่ายอมให้ค่าใน field นั้นเป็น NULL ได้ พูดง่ายๆก็คือค่าว่างนั้นเองครับ แต่ตัวแสดงผล อย่าง phpPgAdmin 3 มันจะแสดงให้เห็นเป็น NULL และ ตัว postgresql เองก็จะกำหนดให้เป็น NULL ด้วยครับ ถ้าไม่มีค่าน่ะครับ
สำหรับการใช้งานโปรแกรมเองมันจะได้ค่าเป็น null (ตัวเล็กน่ะครับ) ดังนั้นจึงไม่อยากให้เกิดเหตุการแบบนี้ขึ้นครับเพราะอาจจะทำให้การทำงานผิดพลาดได้ครับ

คำว่า null (ตัวเล็ก) คือ ได้มาจากโปรแกรมให้ข้อมูลออกมาเป็น null (ตัวเล็ก) หรือ จากฐานข้อมูลเป็น NULL (ตัวใหญ่) และ field นั้นไม่ได้ถูกแทนนี้ด้วยข้อมูลอะไรเลย ซึ่งจะแตกต่างกับ NULL (ตัวใหญ่) เพราะ null (ตัวเล็ก) ก็คือข้อความ null (ตัวเล็ก)

ตัวสุดท้าย "" (ไม่มีข้อความอะไร) ตัวนี้หมายถึงช่องว่าง จะแตกต่างกับ NULL(ตัวใหญ่) ตรงที่ โปรแกรมจะใส่มาให้และตัวนี้แหละครับ ที่จะใช้แทน NULL (ตัวใหญ่) ได้ดีกว่า ในการนำข้อมูลมาใช้ครับ (ในทาง programming) สำหรับเรื่องการทำรายงาน ก็สามารถตรวจสอบได้ง่ายกว่า NULL (ตัวใหญ่)

พอจะเข้าใจกันน่ะครับ สั้นๆ น่ะครับ NULL(ตัวใหญ่) อย่าให้เกิดได้จะดีที่สุดครับ ให้แทน NULL(ตัวใหญ่) ดัวย "" (ไม่มีข้อความอะไร หรือช่องว่าง)



โพสต์ใหม่โดย thos » อังคาร 24 พ.ค. 2005 8:13 pm
ส่วนใหญ่แล้วจะเกิด กับตาราง t_patient เพราะ ถ้าเป็นการนำเข้าโดยการใช้ Access ซึ่งจะนำเข้ามาบาง field ส่วน field ที่ไม่ได้นำเข้ามันจะยอมให้เป็นค่าว่าง ซึ่งก็คือ NULL (ตัวใหญ่) แล้วทำไมมันถึงเกิด ขึ้นได้ เท่าที่สังเกตดูน่ะครับ มันจะเป็นเมื่อ postgresql 7.4 ขึ้นไป มันจะแทนช่องว่าด้วย NULL (ตัวใหญ่)
สำหรับ พี่อุทัย ที่ถามว่าจะตรวจสอบได้อย่างไร คงจะตอบยากน่ะครับ เพราะถ้าให้ดูด้วยตัวเองและแก้ไขมัน ก็ลำบางมากๆๆๆๆ เลย ที่จะต้องมาเปิดกับ phpPgAdmin 3 และไล่ดูที่ละตาราง แต่ตัวโปรแกรมเองถ้ามีการ insert ข้อมูลใหม่มันจะใส่เป็น "" (ช่องว่างหรือไม่มีค่า) ให้เลยครับ
สำหรับพี่ เคน ที่ยังขึ้นมาอยู่ และยังใช้งานได้ เพราะว่า รายการบางตัว ได้ถูก set Active ให้เป็น 0 ไว้มันเลยไม่เอามาใช้งาน ส่วนที่ดึงราคาต้นทุนไม่ได้ พี่ดึงโดยใช้โปรแกรม หรือว่าใช้โปรแกรมอื่นครับ