首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle NUMBER 資料類型精解:精度、標度與儲存範圍全攻略

     編輯:Oracle 資料庫基礎

Oracle NUMBER 資料類型是數值儲存的核心,語法為 NUMBER[(precision [, scale])],簡稱 p(精度)與 s(標度)。本文系統整理其規則、範圍與實際範例。

基本定義與範圍

  • Precision (p):1 ~ 38,有效數字總位數(從左邊第一個非 0 位開始計算)
  • Scale (s):-84 ~ 127,小數點右邊(正數)或左邊(負數)的位數
  • 儲存範圍:-1.0e-130 ~ 1.0e+126
  • 內部儲存大小:1 ~ 22 bytes

Scale (s) 的三種情況

s 值行為有效位檢核
s > 0精確到小數點右邊 s 位,四捨五入有效位 ≤ p
s < 0精確到小數點左邊 |s| 位,四捨五入有效位 ≤ p + |s|
s = 0視為整數有效位 ≤ p

實際範例對照表

實際資料定義儲存結果說明
123.89NUMBER123.89預設全精度
123.89NUMBER(3)124p=3, s=0,四捨五入
123.89NUMBER(6,2)123.89符合精度
123.89NUMBER(6,1)123.9小數 1 位
123.89NUMBER(4,2)錯誤有效位 5 > p=4
123.89NUMBER(6,-2)100百位四捨五入
.01234NUMBER(4,5).01234有效位 4
.000127NUMBER(4,5).00013四捨五入
1.2e-4NUMBER(2,5)0.00012科學標記法
1234.9876NUMBER(6,2)1234.99
12345.12345NUMBER(6,2)錯誤有效位 7 > 6
12345.345NUMBER(5,-2)12300百位
1234567NUMBER(5,-2)1234600
12345678NUMBER(5,-2)錯誤有效位 8 > 7
0.1NUMBER(4,5)錯誤0.10000 有效位 5 > 4
0.09999NUMBER(4,5)0.09999符合

關鍵提醒

  • NUMBER(*) 等同無精度限制,但 NUMBER(*,1) 仍受標度約束
  • 負標度適用於大數字捨入(如千位、百位)
  • 超出精度會拋出 ORA-01438 錯誤

掌握 NUMBER(p,s) 規則,能避免資料截斷、溢位與效能浪費,是資料庫設計必備功力。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved