oracle中的number類型


number 數據類型

number (precision,scale)

a)    precision表示數字中的有效位,如果沒有指定precision的話,oracle將使用38作為精度;

b)    如果scale大於零,表示數字精度到小數點右邊的位數;scale默認設置為0;如果scale小於零,oracle將把該數字取舍到小數點左邊的指定位數。

c)    Precision 的取值范圍是[1-38];scale的取值范圍是[-84-127].

d)    Number整數部分允許的長度為(precision –scale),無論scale是正數還是負數。

e)    如果precision小於scale,表示存儲的是沒有正數的小數。

f)     Precision表示有效位數,有效數位:從左邊第一個不為0的數算起,小數點和負號不計入有效位數;scale表示精確到多少位,指精確到小數點左邊還是右邊多少位(由+-決定)。

g)    Number值類型舉例:

                              

a)    關於precision,scale也可以做如下表述:

定點數的精度(p)和刻度(s)遵循以下規則:

1) 當一個數的整數部分長度 >p-s時,oracle就會報錯;

2) 當一個數的小數部分的長度 >s時,oracle就會舍入;

3) 當s(scale)為負數時,oracle就會對小數點左邊的s進行舍入;

4) 當s > p 時, p表示小數點后第s位向左最多可以有多少位數字,如果大於p則Oracle報錯,小數點后s位向右的數字被舍入。

Number類型的子類:

a)    Oracle本來就沒有int類型,為了與別的數據庫兼容,新增了Int類型作為number類型的子集;

b)    Int類型只能存儲整數,number可以存儲浮點數,也可以存整數。

c)    在oracle數據庫建表的時候,decimal,numeric不帶精度,oralce會自動把它處理成integer;帶精度,oracle會自動把它處理成number。

d)    Oracle只用number(m,n)就可以表示任何復雜的數字數據。

Decimal,numeric,int等都為sql,db2等數據庫的數據類型,Oracle為了兼容才將其引入;但實際上在oracle內部還是以number的形式將其存入的。

 

----

本文轉自:

http://blog.csdn.net/nsj820/article/details/6226519


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM