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位精度 |