2016-10-13 2 views
1

테이블에 긴 정수를 저장하려고합니다. 내 테이블 스키마는 아래 과 같습니다.큰 숫자를 처리하는 방법

CREATE TABLE t7(a long integer); 

그리고 아래 값을 삽입합니다.

insert into t7(a) values(16732595907054788167); 

하지만 난

select * from t7; 

1.67325959070548e+19 

다음과 같이 숫자 값을 얻고있다 그리고 데이터 유형으로 문자열이나 BLOB를 사용하지 않을 선택 않는 경우. 선택할 때 어떻게 숫자를 정수로 변환 할 수 있습니까?

+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

데이터 유형을 부호없는 정수로 변경하는 방법은 무엇입니까? – kiranjc

관련 문제