2016-10-13 6 views
1

Я пытаюсь хранить длинное целое число в таблице. Моя схема таблицы выглядит как ниже.Как обрабатывать большие числа

CREATE TABLE t7(a long integer); 

, и я вставляю ниже значения.

insert into t7(a) values(16732595907054788167); 

но когда я делаю выбор, я получаю числовое значение, как показано ниже

select * from t7; 

1.67325959070548e+19 

И я не хочу использовать строку или блоб как тип данных. Как я могу набрать числовое значение в длинное целое при выборе.

+0

16732595907054788167 превышает емкость хранилища 'long integer' (при условии его 64 бит) и приближается к пределу для беззнакового эквивалента. –

+0

Итак, как вы думаете, какой тип данных будет использоваться? – kiranjc

+0

http://stackoverflow.com/questions/7142604/what-to-do-when-you-need-integers-larger-than-20-digits-on-mysql –

ответ

1

SQLite использует подписали 64-разрядных целых чисел, поэтому наибольшее возможное целое значение 9223372036854775807.

И он использует dynamic typing, так что нет ничего, что вы можете сделать, чтобы получить большие числа:

CREATE TABLE test(
    Col1 LONG INTEGER, 
    Col2 UNSIGNED LONG INTEGER, 
    Col3 EXTREMELY HUGE LONG LONG LONG INTEGER EXTENDED ENTERPRISE EDITION, 
    Col4 EH WHATEVER 
); 
INSERT INTO test VALUES (9223372036854775807,9223372036854775807,9223372036854775807,9223372036854775807); 
INSERT INTO test VALUES (9223372036854775808,9223372036854775808,9223372036854775808,9223372036854775808); 

SELECT * FROM test; 
9223372036854775807 9223372036854775807 9223372036854775807 9223372036854775807 
9.22337203685478e+18 9.22337203685478e+18 9.22337203685478e+18 9.22337203685478e+18 

У вас есть использовать строки или капли.

+0

Как изменить тип данных на unsigned long integer? – kiranjc

Смежные вопросы