expression을(를) 데이터 형식 int(으)로 변환하는 중 산술 오버플로 오류가 발생했습니다.
int형의 범위를 초과하여 발생한 경우로 더 큰 데이터 형식(bigint)으로 변환하면 문제가 해결된다.
-- INT형 컬럼을 가진 테이블 생성 CREATE TABLE TEST ( COL1 INT NOT NULL IDENTITY(1,1) , COL2 INT )
-- 데이터 삽입(두 값을 SUM 하였을 경우 INT형의 범위를 초과하게 삽입) INSERT INTO TEST VALUES ('2000000000'), ('2000000000')
-- 두 값을 SUM 하였을 경우 산술 오버플로 오류 확인 SELECT SUM(COL2) FROM TEST
-- CONVERT나 CAST로 INT형을 BIGINT형으로 변환 SELECT SUM(CONVERT(BIGINT, COL2)) FROM TEST SELECT SUM(CAST(COL2 AS BIGINT)) FROM TEST
|
데이터 형식에 따른 범위
bigint
-2^63(-9,223,372,036,854,775,808) ~ 2^63-1(9,223,372,036,854,775,807) 8바이트
int
-2^31(-2,147,483,648) ~ 2^31-1(2,147,483,647) 4바이트
smallint
-2^15(-32,768) ~ 2^15-1(32,767) 2바이트
tinyint
0 ~ 255 1바이트
'DBMS > SQL Server' 카테고리의 다른 글
[SQL Server] OBJECT_ID 함수를 이용한 개체 존재 여부 확인 (0) | 2013.02.23 |
---|---|
[SQL Server] where 절에서는 별칭(alias)을 사용할 수 없다. (0) | 2013.02.19 |
[SQL Server] Index Depth 확인하기 (0) | 2013.01.23 |
[SQL Server] SET 문 (0) | 2013.01.23 |
[SQL Server] 데이터 저장과 관련한 세 가지 프로세스 (0) | 2013.01.22 |