在Oracle中存储大量数字-请举一个可以存储9e125的示例

时间:2019-06-13 16:38:15

标签: oracle

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吗?

2 个答案:

答案 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