ว่าด้วย Data Type NUMBER ของ Oracle

ว่าด้วย Data Type NUMBER ของ Oracle

oracle

ฐานข้อมูล Oracle นั้นค่นข้างที่จะแตกต่างไปจากค่ายอื่นอย่าง mysql หรือ MS Sql ในหลายๆเรื่อง และหนึ่งในนั้นก็คือ Data Type พวกตัวเลขเพราะ mysql หรือ MS Sql จะมี data type อย่าง FLOAT กับ DECIMAL แต่ของ Oracle นั้นกลับไม่มีและจะเปลี่ยนไปใช้ Data Type NUMBER แทนโดยใช้ลูกเล่นของการกำหนดจำนวนหลักและจำนวนทศนิยมแทน ถ้าหากมองในด้านการใช้งานผมว่ามันก็เป็นการดีนะครับที่เราไม่จำเป็นต้องไปจำ type ว่าตัวเลขขนาดนี้ใช้ data type อะไรเลือกใช้ data type แบบเดียวแต่กำหนดขนาดหลักและทศนิยมที่รองรับไปเลย แต่หากมองด้านการแตกต่างของมาตรฐานละก็คงเป็นเรื่องที่ทำให้คนใช้งานเกิดความสับสนกันพอสมควร ประมาณว่า สรุปแบบไหนที่เป็นมาตรฐานกันแน่ เรื่องนี้อาจเกิดจากในยุคที่ต่างฝ่ายต่างออกแบบผลิตภัณฑ์ของตน ต่างก็คิดว่าของตนดี จนนานวันทำให้เกิดการแตกต่างของมาตรไปแล้วจะแก้ไขก็ไม่ได้งานช้างเลยทีเดียว

เอาละจะยังไงก็ช่างเรามาดูรายละเอียดของ NUMBER ใน Oracle กันดีกว่า NUMBER ของ Oracle นั้นรองรับได้สูงสุด 38 Digi คือรวมทั้งจำนวนหลักและทศนิยมรวมกัน 38 หลักนี้เก็บตัวเลขได้มากมายแล้วครับ

Input Data Specified As Stored As
7,456,123.89 NUMBER 7456123.89
7,456,123.89 NUMBER(*,1) 7456123.9
7,456,123.89 NUMBER(9) 7456124
7,456,123.89 NUMBER(9,2) 7456123.89
7,456,123.89 NUMBER(9,1) 7456123.9
7,456,123.89 NUMBER(6) (not accepted, exceeds precision)
7,456,123.89 NUMBER(7,-2) 7456100

โดยจากตารางจะเห็นว่าทางด้านซ้ายเป็น Input ที่ใส่เข้าไปแล้ว ช่องกลางจะเป็นการกำหนด NUMBER แบบต่างๆ ส่วนช่องขวาสุดจะเป็นค่าที่เก็บลงฐานข้อมูลในกรณีที่กำหนด NUMBER ตามนั้น การกำหนด NUMBER นั้นก็เป็นไปตามหลักการธรรมดาครับคือ NUMBER(จำหนวนหลักของตัวเลขไม่ใช่ทศนิยม , จำนวนหลักทศนิยมที่จะเก็บ) ดังเป็นไปตามตัวอย่าง นอกจากนั้นจะสังเกตเห็นการใช้เครื่อง * และ – ในการกำหนด NUMBER * นั้นก็คือกี่หลักก็ได้จนกว่าจะเต็มจำนวนสูงสุดคือ 38 digi ส่วน – นั้นจะเป็นการปัดทศนิยมเช่น – 2 จะทำการปัดตัวเลขที่ 2 หลักคือหลักสิบนั้นเอง เพราะนับจากหลักหน่วย หลักสิบ 2 หลักพอดี จะเห็นว่าการใช้งาน Oracle นั้นก็มีบ้างอย่างที่รองรับการทำงานที่ซับซ้อนแต่ก็ง่ายเหมือนกันเพราะไม่ต้องมานั่งกางตาราง data type ว่าจะเก็บแบบไหนดีแต่ใช้ NUMBER แล้วกำหนดหลักและทศนิยมพอ ส่วนบ้างคนนั้นก็นิยมใช้ NUMBER เก็บข้อมูลที่เป็นจำนวนเต็มแบบ INT เหมือนกันเพราะมันก็สามารถใช้ได้เหมือนกัน เรียกว่า NUMBER เก็บได้ทุกรูปแบบที่เก็บข้อมูลตัวเลขเลยครับ แล้วยังรองรับ * กับการปัดตัวเลขด้วยเครื่องหมาย – อีกด้วย

Leave a Reply

Your email address will not be published. Required fields are marked *