다음을 통해 공유


int, bigint, smallint 및 tinyint(Transact-SQL)

정수 데이터를 사용하는 정확한 숫자 데이터 형식입니다.

데이터 형식

범위

저장소

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바이트

주의

int 데이터 형식은 SQL Server에서 주 정수 데이터 형식입니다. bigint 데이터 형식은 정수 값이 int 데이터 형식에서 지원하는 범위를 초과하는 경우에 사용하기 위한 것입니다.

bigint의 데이터 형식 우선 순위 위치는 smallmoney와 int 사이입니다.

함수는 매개 변수 식이 bigint 데이터 형식인 경우에만 bigint를 반환합니다. SQL Server에서는 다른 정수 데이터 형식(tinyint, smallint 및 int)을 자동으로 bigint로 승격시키지 않습니다.

주의 사항주의

+, -, *, / 또는 % 산술 연산자를 사용하여 int, smallint, tinyint 또는 bigint 상수 값을 float, real, decimal 또는 numeric 데이터 형식으로 암시적 또는 명시적으로 변환하는 경우 SQL Server에서 데이터 형식과 식의 전체 자릿수를 계산할 때 적용하는 규칙은 쿼리에 자동으로 매개 변수가 지정되는지 여부에 따라 결과가 달라집니다.

그러므로 경우에 따라 쿼리의 비슷한 식이 다른 결과를 생성하기도 합니다. 쿼리에 자동으로 매개 변수가 지정되지 않는 경우 상수 값은 먼저 전체 자릿수가 상수 값을 보유할 수 있을 만큼 큰 numeric으로 변환된 다음 지정된 데이터 형식으로 변환됩니다. 예를 들어 상수 값 1은 numeric (1, 0)으로 변환되고 상수 값 250은 numeric (3, 0)으로 변환됩니다.

쿼리에 자동으로 매개 변수가 지정되는 경우 상수 값은 최종 데이터 형식으로 변환하기 전에 항상 numeric (10, 0)으로 변환됩니다. / 연산자가 들어 있는 경우 비슷한 쿼리 간에 결과 형식의 전체 자릿수뿐만 아니라 결과 값도 달라질 수 있습니다. 예를 들어 자동으로 매개 변수가 지정되며 SELECT CAST (1.0 / 7 AS float) 식이 포함된 쿼리의 결과 값은 자동으로 매개 변수가 지정되지 않는 동일한 쿼리의 결과 값과 달라집니다. 자동으로 매개 변수가 지정되는 쿼리의 결과는 numeric (10, 0) 데이터 형식에 맞게 잘리기 때문입니다.

Integer 데이터 변환

정수가 암시적으로 문자 데이터 형식으로 변환될 경우 정수가 너무 커서 문자 필드에 맞지 않으면 SQL Server는 ASCII 문자 42인 별표(*)를 입력합니다.

2,147,483,647보다 큰 정수 상수는 bigint 데이터 형식이 아닌 decimal 데이터 형식으로 변환됩니다. 다음 예에서는 임계값을 초과할 때 데이터 형식이 int에서 decimal로 변경됨을 보여 줍니다.

SELECT 2147483647 / 2 AS Result1, 2147483649 / 2 AS Result2 ;

결과 집합은 다음과 같습니다.

Result1      Result2
1073741823   1073741824.500000

참고 항목

참조

ALTER TABLE(Transact-SQL)

CAST 및 CONVERT(Transact-SQL)

CREATE TABLE(Transact-SQL)

DECLARE @local\_variable(Transact-SQL)

SET @local\_variable(Transact-SQL)

sys.types(Transact-SQL)