天天看點

Oracle與GBase 8s資料類型對比-Number類型

Oracle資料庫NUMBER(precision,scale)

  • precision表示數字中的有效位,從左邊第一個不為0的數算起,小數點和負号不計入有效位數;scale表示精确到多少位,指精确到小數點左邊或右邊多少位(±決定)。
  • 如果沒有指定precision的話,Oracle将使用38作為精度;
  • 如果scale大于零,表示數字精确到小數點右邊的位數;
  • scale預設設定為0;
  • 如果scale小于零,Oracle将把該數字取舍到小數點左邊的指定位數;
  • Precision的取值範圍為1至38,Scale的取值範圍為-84至127;
  • NUMBER整數部分允許的長度為(precision - scale),無論scale是正數還是負數;
  • 如果precision小于scale,表示存儲的是沒有整數的小數。

根據實際的p,s值,number資料類型映射到GBase 8s上的多個資料類型。

oracle資料類型 GBase 8s資料類型 示例 說明

NUMBER

NUMBER(*,0)

DECIMAL(32) 1234567890 精度範圍内為整數;超出精度則截取,保留32位精度

NUMBER(p ) (p<5)

NUMBER(p,s) (p<5且s<=0)

SMALLINT 1234 小于5位為小整型

NUMBER(p ) (p<9)

NUMBER(p,s) (p-s<9且s<=0)

INTEGER 12345678 小于9位為整型

NUMBER(p ) (9<=p<19)

NUMBER(p,s) (9<=p-s<19且s<=0)

BIGINT 123456789012345678 不小于9位且小于19位為大整型
NUMBER(p,s) (p>=s且0<s<=38) DECIMAL(min(p,32),min(s,26)) 12345678910.123456789 含有整數及小數部分,可能損失刻度
NUMBER(p,s) (p<s且s>0) DECIMAL(min(s,32),min(s,32)) 0.123456789 隻有小數部分,可能損失刻度
NUMBER(p,s) (19<=p-s<=32且s<0) DECIMAL(min(p,32)) 1234567890123456789000 精度範圍内為整數;超出精度則截取,保留32位精度