Partilhar via


binário e varbinary (Transact-SQL)

Aplica-se a:SQL ServerBase de Dados SQL do AzureInstância Gerida do Azure SQLAzure Synapse AnalyticsSistema de Plataforma de Análise (PDW)Ponto de Extremidade de Análise SQL no Microsoft FabricArmazém no Microsoft FabricBase de Dados SQL no Microsoft Fabric

Tipos de dados binários de comprimento fixo ou comprimento variável.

Arguments

binário [ ( n ) ]

Dados binários de comprimento fixo com um comprimento de n bytes, onde n é um valor de 1 a 8.000. O tamanho do armazenamento é de n bytes.

varbinary [ ( n | máximo ) ]

Dados binários de comprimento variável. n pode ser um valor de 1 a 8.000. max indica que o tamanho máximo de armazenamento é 2^31-1 bytes. O tamanho do armazenamento é o comprimento real dos dados inseridos + 2 bytes. Os dados inseridos podem ter 0 bytes de comprimento. O sinônimo ANSI SQL para varbinary é binário variando.

Remarks

O comprimento padrão é 1 quando n não é especificado em uma definição de dados ou instrução de declaração variável. Quando n não é especificado com a CAST função, o comprimento padrão é 30.

Tipo de dados Use quando ...
binary Os tamanhos das entradas de dados da coluna são consistentes.
varbinary Os tamanhos das entradas de dados da coluna variam consideravelmente.
varbinary(max) As entradas de dados da coluna excedem 8.000 bytes.

Converter dados binários e varbinary

Ao converter dados de um tipo de dados de cadeia de caracteres para um tipo de dados binário ou varbinary de comprimento desigual, o SQL Server preenche ou trunca os dados à direita. Esses tipos de dados de cadeia de caracteres são:

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

Quando outros tipos de dados são convertidos em binários ou varbinários, os dados são acolchoados ou truncados à esquerda. O preenchimento é obtido usando zeros hexadecimais.

A conversão de dados para os tipos de dados binários e varbinary é útil se os dados binários forem a maneira mais fácil de mover dados. Em algum momento, você pode converter um tipo de valor em um valor binário de tamanho grande o suficiente e, em seguida, convertê-lo de volta. Essa conversão sempre resulta no mesmo valor se ambas as conversões estiverem ocorrendo na mesma versão do SQL Server. A representação binária de um valor pode mudar de versão para versão do SQL Server.

Você pode converter int, smallint e tinyint em binário ou varbinary. Se converter o valor binário de volta para um valor inteiro, este valor é diferente do valor inteiro original se ocorrer truncamento. Por exemplo, a instrução SELECT a seguir mostra que o valor 123456 inteiro é armazenado como um binário 0x0001e240:

SELECT CAST( 123456 AS BINARY(4) );

No entanto, a instrução a seguir SELECT mostra que, se o destino binário for muito pequeno para manter o valor inteiro, os dígitos principais serão truncados silenciosamente para que o mesmo número seja armazenado como 0xe240:

SELECT CAST( 123456 AS BINARY(2) );

O lote a seguir mostra que esse truncamento silencioso pode afetar operações aritméticas sem gerar um erro:

DECLARE @BinaryVariable2 BINARY(2);

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

SELECT CAST( @BinaryVariable2 AS INT);
GO

O resultado final é 57921, não 123457.

Note

Não é garantido que as conversões entre qualquer tipo de dados e os tipos de dados binários sejam as mesmas entre as versões do SQL Server.