binary 및 varbinary(Transact-SQL)

고정 길이 또는 가변 길이의 binary 데이터 형식입니다.

  • binary [ ( n ) ]
    길이가 n바이트인 고정 길이 이진 데이터입니다. 여기서 n은 1부터 8,000까지의 값입니다. 저장소 크기는 n바이트입니다.

  • varbinary [ ( n | max) ]
    가변 길이 이진 데이터입니다. n은 1부터 8,000 사이의 값이 될 수 있습니다. max는 최대 저장소 크기가 2^31-1바이트임을 나타냅니다. 저장소 크기는 입력된 실제 데이터 길이에 2바이트를 더한 값입니다. 입력된 데이터의 길이가 0바이트일 수 있습니다. varbinary의 ANSI SQL 동의어는 binary varying입니다.

주의

데이터 정의나 변수 선언문에서 n을 지정하지 않으면 기본 길이 1이 사용됩니다. CAST 함수에 n을 지정하지 않으면 기본 길이 30이 사용됩니다.

열 데이터 항목의 크기가 일관된 경우 binary를 사용합니다.

열 데이터 항목의 크기가 비교적 큰 차이를 보일 경우 varbinary를 사용합니다.

열 데이터 항목의 길이가 8,000바이트를 초과하면 varbinary(max)를 사용합니다.

binary 및 varbinary 데이터 변환

데이터가 문자열 데이터 형식(char, varchar, nchar, nvarchar, binary, varbinary, text, ntext 또는 image)에서 길이가 다른 binary 또는 varbinary 데이터 형식으로 변환되면 SQL Server는 데이터 오른쪽을 채우거나 자릅니다. 기타 데이터 형식이 binary 또는 varbinary로 변환되면 데이터 왼쪽이 채워지거나 잘립니다. 패딩은 16진수 0을 사용하여 수행됩니다.

binary 데이터가 데이터를 이동하는 가장 쉬운 방법일 경우 데이터를 binary 및 varbinary 데이터 형식으로 변환하는 것이 유용합니다. 두 변환이 같은 버전의 SQL Server에서 수행된 경우 형식의 값을 아주 큰 이진 값으로 변환한 다음 다시 이전 형식으로 변환하면 항상 같은 값을 갖게 됩니다. 값의 이진 표현은 SQL Server의 버전을 변경합니다.

int, smallint 및 tinyint를 binary 또는 varbinary로 변환할 수 있지만 binary 값을 다시 정수 값으로 변환하면 잘림이 발생한 경우 이 값은 원래 정수 값과 달라집니다. 예를 들어 다음 SELECT 문은 정수 값 123456이 일반적으로 이진 0x0001e240으로 저장됨을 보여 줍니다.

SELECT CAST( 123456 AS BINARY(4) );

다음 SELECT 문에서 binary 대상이 전체 값을 보유하기에 너무 작으면 동일한 숫자가 0xe240으로 저장되도록 선행 숫자가 자동으로 잘리는 것을 볼 수 있습니다.

SELECT CAST( 123456 AS BINARY(2) );

다음 일괄 처리는 자동 잘림이 오류를 일으키지 않고 산술 연산에 영향을 줄 수 있음을 보여 줍니다.

DECLARE @BinaryVariable2 BINARY(2);

SET @BinaryVariable2 = 123456;
SET @BinaryVariable2 = @BinaryVariable2 + 1;

SELECT CAST( @BinaryVariable2 AS INT);
GO

최종 결과는 123457이 아니라 57921입니다.

[!참고]

모든 데이터 형식과 binary 데이터 형식 간의 변환은 SQL Server 버전 사이에서 같다고 보장할 수 없습니다.

참고 항목

참조

CAST 및 CONVERT(Transact-SQL)

데이터 형식(Transact-SQL)

개념

데이터 형식 변환(데이터베이스 엔진)