回覆列表
  • 1 # 使用者3830315089929991

    oracle中的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的形式將其存入的。

  • 中秋節和大豐收的關聯?
  • 白金和銀子那個硬?