一、 oracle 的 number 类型精度、刻度范围
number(p,s)
p: 1---38
s: -84---127
有效数位 :从左边第一个不为 0 的数算起,到末位数字为止的所有数字,小数点和负号不计入有效位数。
p>0 ,对 s 分 3 种情况:
1.s>0
精确到小数点右边 s 位,并四舍五入 。然后检验有效数位是否 <= p ;
ZWF.YUDONG>create table t_n(id number(5,2));
Table created.
? -- 小数点前面最多只能有 3 位,小数点后面位数可以任意多
ZWF.YUDONG>insert into t_n values(123.45);
1 row created.
ZWF.YUDONG>insert into t_n values(123.455);
1 row created.
ZWF.YUDONG>insert into t_n values(12.345);
1 row created.
ZWF.YUDONG>insert into t_n values(1.234);
1 row created.
ZWF.YUDONG>insert into t_n values(.001);
1 row created.
ZWF.YUDONG>select * from t_n;
?? ??? ID
----------
? 123.45
? 123.46
12.35
1.23
0.00
5 rows selected.
ZWF.YUDONG>insert into t_n values(1234.5678); ? -- 有效位为 4 + 2 > 5
insert into t_n values(1234.5678)
?? ?? ?? ?? ?? ?? ??? *
ERROR at line 1:
ORA-01438: value larger than specified precision allowed for this column
ZWF.YUDONG>insert into t_n values(12345); ? -- 有效位为 5 + 2 > 5
insert into t_n values(12345)
?? ?? ?? ?? ?? ?? ??? *
ERROR at line 1:
ORA-01438: value larger than specified precision allowed for this column