Oracle文档说,一个数字最多可以存储9.99 ... 9 x 10125,最多可以存储38个有效数字:https://docs.oracle.com/cd/B28359_01/server.111/b28318/datatype.htm#i16209。
我尝试过:
create table bigtest (t number(38,2));
insert into bigtest values (5e40);
但是我得到了
[Error] Execution (8: 29): ORA-01438: value larger than specified precision allowed for this column
应该可以存储9.99e125,对吗?有人可以举一个例子说明如何存储9.99e125吗?
答案 0 :(得分:2)
请参见DBfiddle here(Oracle 18c)。
create table T1 (
anumber number
) ;
insert into t1 ( anumber ) values ( 9.99e125 ) ;
select * from t1 ;
ANUMBER
999000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
答案 1 :(得分:0)
一种方法是使用number
数据类型,而不指定精度和小数位数。
您可以为非常大(也非常小的)数字指定精度和小数位数。请记住,负小数位数表示“整数的末端处有许多零”-数字的总数最多可精度 + 标度的绝对值。
在下面的示例中,请注意38 + 84 =122。小数位数必须在-84到127之间,这意味着如果您使用精度和小数位数,则只能存储<1e123的数字-比完整的number
数据类型,但仍存储非常大的数字
create table tbl(x number(38,-84));
insert into tbl values (3.493e121);
select x from tbl;
X
----------
3.4930E+121