本文主要是介绍oracle中number型字段长度、精度及实际存储状态测试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
工作中经常要遇到这种字段的处理情况,当然以前也见过大虾总结过。但是看了之后,又还给人家。是人家的终究还是人家的,需要自己亲自测试并总结才能变成自己的。
p:1~38
s:-84~127
精确到小数点右边s位,并四舍五入。然后检验有效数位是否<=p;如果s>p,小数点右边至少有s-p个0填充。
精确到小数点左边s位,并四舍五入。然后检验有效数位是否<=p+|s|
案例测试:
名称 是否为空? 类型
----------------------------------------------------- -------- ------------
NUM1 NUMBER
NUM2 NUMBER(2)
NUM3 NUMBER(5,3)
NUM4 NUMBER(5,-2)
insert into hongsy(num2) values(111)
*
ERROR 位于第 1 行:
ORA-01438: 值大于此列指定的允许精确度
hongsy@test>insert into hongsy(num2) values(-11);
insert into hongsy(num2) values(-111)
*
ERROR 位于第 1 行:
ORA-01438: 值大于此列指定的允许精确度
hongsy@test>insert into hongsy(num2) values(-11.1);
----------
11
-11
-11
-11
insert into hongsy(num3) values(111)
*
ERROR 位于第 1 行:
ORA-01438: 值大于此列指定的允许精确度
hongsy@test>insert into hongsy(num3) values(11);
insert into hongsy(num3) values(-111)
*
ERROR 位于第 1 行:
ORA-01438: 值大于此列指定的允许精确度
hongsy@test>insert into hongsy(num3) values(11.111);
----------
11
-11
11.111
11.111
insert into hongsy(num4) values(11111111)
*
ERROR 位于第 1 行:
ORA-01438: 值大于此列指定的允许精确度
hongsy@test>commit;
----------
1100
111100
----------
1100
111100
1111100
create table hongsy1 (num1 number(39))
*
ERROR 位于第 1 行:
ORA-01727: 数字精度说明符超出范围(1 到 38)
hongsy@test>create table hongsy1 (num1 number(38,128));
create table hongsy1 (num1 number(38,128))
*
ERROR 位于第 1 行:
ORA-01728: 数字标度说明符超出范围(-84 到 127)
这篇关于oracle中number型字段长度、精度及实际存储状态测试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!