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

Oracle NUMBER 類型精度與範圍完整解析

     編輯:Oracle 資料庫基礎

語法

NUMBER[(precision [, scale])]
-- 簡稱:p = precision, s = scale

參數範圍

  • 1 ≤ p ≤ 38
  • -84 ≤ s ≤ 127
  • 存儲範圍:-1.0E-130 ~ 1.0E+126(不含邊界)
  • 內部存儲:1 ~ 22 字節

有效位規則

從左側第一個非 0 數字起算,小數點與負號不計入。

scale (s) 三種情況

情況規則示例
s > 0精確到小數點右 s 位,四捨五入,再檢查有效位 ≤ p123.89 → NUMBER(6,2) 存 123.89
s < 0精確到小數點左 |s| 位,四捨五入,檢查有效位 ≤ p + |s|123.89 → NUMBER(6,-2) 存 100
s = 0 或省略整數1234.9876 → NUMBER(6) 存 1235

大量實例驗證表

Actual Data      Specified As        Stored As
123.89           NUMBER              123.89
123.89           NUMBER(3)           124
123.89           NUMBER(6,2)         123.89
123.89           NUMBER(6,1)         123.9
123.89           NUMBER(4,2)         exceeds precision
123.89           NUMBER(6,-2)        100
.01234           NUMBER(4,5)         .01234
.00012           NUMBER(4,5)         .00012
.000127          NUMBER(4,5)         .00013
.0000012         NUMBER(2,7)         .0000012
.00000123        NUMBER(2,7)         .0000012
1.2e-4           NUMBER(2,5)         0.00012
1.2e-5           NUMBER(2,5)         0.00001
123.2564         NUMBER              123.2564
1234.9876        NUMBER(6,2)         1234.99
12345.12345      NUMBER(6,2)         Error (有效位 7 > 6)
1234.9876        NUMBER(6)           1235
12345.345        NUMBER(5,-2)        12300
1234567          NUMBER(5,-2)        1234600
12345678         NUMBER(5,-2)        Error (有效位 8 > 7)
123456789        NUMBER(5,-4)        123460000
1234567890       NUMBER(5,-4)        Error (有效位 10 > 9)
12345.58         NUMBER(*,1)         12345.6
0.1              NUMBER(4,5)         Error (有效位 5 > 4)
0.01234567       NUMBER(4,5)         0.01235
0.09999          NUMBER(4,5)         0.09999

關鍵點

  • NUMBER(*) 等同於無精度限制,僅受 38 位上限約束;
  • 科學計數法輸入會按精度規則轉換存儲;
  • 超出精度直接報錯 ORA-01438,不會靜默截斷。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved