NUMBER[(precision [, scale])]
-- 簡稱:p = precision, s = scale
從左側第一個非 0 數字起算,小數點與負號不計入。
| 情況 | 規則 | 示例 |
|---|---|---|
| s > 0 | 精確到小數點右 s 位,四捨五入,再檢查有效位 ≤ p | 123.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,不會靜默截斷。