binary e varbinary (Transact-SQL)

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics PDW (Analytics Platform System) Ponto de extremidade de análise de SQL no Microsoft Fabric Warehouse no Microsoft Fabric

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

Argumentos

binary [ ( n ) ]

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

varbinary [ ( n | máx ) ]

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

Comentários

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

Tipo de dados Use quando...
binary os tamanhos das entradas de dados de coluna forem consistentes.
varbinary os tamanhos das entradas de dados de coluna variarem consideravelmente.
varbinary(max) as entradas de dados de coluna excederem 8.000 bytes.

Converter dados binary e varbinary

Quando são convertidos dados de um tipo de dados String em um tipo de dados binary ou varbinary de tamanho diferente, 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
  • imagem

Quando outros tipos de dados são convertidos em binary ou varbinary, os dados são preenchidos ou truncados à esquerda. O preenchimento é realizado por meio de zeros hexadecimais.

A conversão de dados em tipos de dados binary e varbinary é útil se os dados binary são a maneira mais fácil de mover os 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 novamente. Essa conversão sempre resultará no mesmo valor se ambas as conversões estiverem acontecendo na mesma versão de SQL Server. A representação binária de um valor pode ser alterada de uma versão para outra do SQL Server.

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

SELECT CAST( 123456 AS BINARY(4) );

Entretanto, a seguinte instrução SELECT mostra que se o destino binary for muito pequeno para manter o valor inteiro, os dígitos à esquerda serão silenciosamente truncados, de forma que o mesmo número seja armazenado como 0xe240:

SELECT CAST( 123456 AS BINARY(2) );

O lote seguinte 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.

Observação

As conversões entre qualquer tipo de dados e os tipos de dados binary não têm garantia de serem as mesmas entre as versões do SQL Server.

Limitações

Atualmente, no Microsoft Fabric, há suporte apenas para varbinary (n). Não há suporte para os tipos de dados binary e varbinary(max).

Confira também