Храните большое число в Oracle - приведите пример, который может хранить 9e125 - PullRequest
2 голосов
/ 13 июня 2019

В документе 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 ]

2 голосов
/ 13 июня 2019

См. DBfiddle здесь (Oracle 18c).

create table T1 (
  anumber number
) ;

insert into t1 ( anumber ) values ( 9.99e125 ) ;

select * from t1 ;

ANUMBER
999000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0 голосов
/ 14 июня 2019

Один из способов - использовать тип данных number без указания точности и масштаба.

Вы можете указать точность и масштаб для очень больших (а также для очень маленьких) чисел, хотя,Просто имейте в виду, что отрицательная шкала означает "что много нулей в конце целого числа" - общее количество *1011* цифр может быть до точность + абсолютное значение из шкала .

В приведенном ниже примере обратите внимание, что 38 + 84 = 122. Масштаб должен быть между -84 и 127, что означает, что если вы используете точность и масштаб, вы можете хранить только числа <1e123 - меньшедиапазон, чем для полного <code>number типа данных, но при этом сохраняется очень большое число

create table tbl(x number(38,-84));

insert into tbl values (3.493e121);

select x from tbl;

         X
----------
3.4930E+121
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...