다음을 통해 공유


binary 및 varbinary(Transact-SQL)

적용 대상: Microsoft Fabric의 Microsoft Fabric SQL 데이터베이스에 있는 Microsoft Fabric Warehouse의 SQL Server Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW) SQL 분석 엔드포인트

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

인수

binary [ ( n ) ]

길이가 n바이트인 고정 길이의 이진 데이터입니다. 여기서 n은 1부터 8,000까지의 값입니다. 스토리지 크기는 n 바이트입니다.

varbinary [ ( n | max ) ]

가변 길이 이진 데이터입니다. n은 1부터 8000 사이의 값이 될 수 있습니다. max는 최대 스토리지 크기가 2^31-1바이트임을 나타냅니다. 스토리지 크기는 입력된 실제 데이터 길이에 2바이트를 더한 값입니다. 입력된 데이터의 길이가 0바이트일 수 있습니다. varbinary의 ANSI SQL 동의어는 binary varying입니다.

설명

데이터 정의나 변수 선언문에서 n을 지정하지 않은 경우 기본 길이는 1입니다. CAST 함수에 n을 지정하지 않은 경우 기본 길이는 30입니다.

데이터 형식 사용 시기...
binary 열 데이터 항목의 크기가 일관적입니다.
varbinary 열 데이터 항목의 크기가 상당히 다릅니다.
varbinary(max) 열 데이터 항목이 8,000바이트를 초과합니다.

binary 및 varbinary 데이터 변환

문자열 데이터 형식에서 길이가 다른 binary 또는 varbinary 데이터 형식으로 데이터를 변환하면 SQL Server는 오른쪽의 데이터를 패딩하거나 자릅니다. 문자열 데이터 형식은 다음과 같습니다.

  • char
  • varchar
  • nchar
  • nvarchar
  • binary
  • varbinary
  • text
  • ntext
  • image

다른 데이터 형식을 binary 또는 varbinary로 변환하면 데이터의 왼쪽이 패딩되거나 잘립니다. 패딩은 16진수 0을 사용하여 수행됩니다.

데이터를 binaryvarbinary 데이터 형식으로 변환하는 것은 binary 데이터가 데이터를 이동하는 가장 쉬운 방법인 경우에 유용합니다. 특정 시점에 값 형식을 충분히 큰 크기의 이진 값으로 변환한 후 다시 이전 형식으로 변환할 수 있습니다. 두 변환이 같은 버전의 SQL Server에서 수행된 경우 이 변환에서는 항상 같은 값이 생성됩니다. 값의 이진 표현은 SQL Server의 버전을 변경합니다.

int, smallinttinyintbinary 또는 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의 버전 사이에서 같다고 보장할 수 없습니다.

제한 사항

현재 Microsoft Fabric에서는 varbinary(n)만 지원됩니다. 이진 및 varbinary(max) 데이터 형식은 지원되지 않습니다.

참고 항목