binary e varbinary (Transact-SQL)binary and varbinary (Transact-SQL)

APLICA-SE A: simSQL Server simBanco de Dados SQL do Azure simAzure Synapse Analytics (SQL DW) simParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure Synapse Analytics (SQL DW) yesParallel Data Warehouse

Tipos de dados binários de comprimento fixo ou comprimento variável.Binary data types of either fixed length or variable length.

ArgumentosArguments

binary [ ( n ) ] Dados binários de comprimento fixo com um tamanho de n bytes, em que n é um valor de 1 a 8.000.binary [ ( n ) ] Fixed-length binary data with a length of n bytes, where n is a value from 1 through 8,000. O tamanho do armazenamento é n bytes.The storage size is n bytes.

varbinary [ ( n | max) ] Dados binários de tamanho variável.varbinary [ ( n | max) ] Variable-length binary data. n pode ser um valor de 1 a 8.000.n can be a value from 1 through 8,000. max indica que o tamanho de armazenamento máximo é de 2^31-1 bytes.max indicates that the maximum storage size is 2^31-1 bytes. O tamanho do armazenamento é o tamanho real dos dados inseridos + 2 bytes.The storage size is the actual length of the data entered + 2 bytes. Os dados inseridos podem ter 0 bytes de comprimento.The data that is entered can be 0 bytes in length. O sinônimo ANSI SQL para varbinary é binary varying.The ANSI SQL synonym for varbinary is binary varying.

ComentáriosRemarks

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.The default length is 1 when n isn't specified in a data definition or variable declaration statement. Quando n não é especificado com a função CAST, o tamanho padrão é 30.When n isn't specified with the CAST function, the default length is 30.

Tipo de dadosData type Use quando...Use when ...
binarybinary os tamanhos das entradas de dados de coluna forem consistentes.the sizes of the column data entries are consistent.
varbinaryvarbinary os tamanhos das entradas de dados de coluna variarem consideravelmente.the sizes of the column data entries vary considerably.
varbinary(max)varbinary(max) as entradas de dados de coluna excederem 8.000 bytes.the column data entries exceed 8,000 bytes.

Convertendo dados binary e varbinaryConverting binary and varbinary data

Quando são convertidos dados de um tipo de dados String em um tipo de dados binary ou varbinary de tamanho diferente, o SQL ServerSQL Server preenche ou trunca os dados à direita.When converting data from a string data type to a binary or varbinary data type of unequal length, SQL ServerSQL Server pads or truncates the data on the right. Esses tipos de dados de cadeia de caracteres são:These string data types are:

  • charchar
  • varcharvarchar
  • ncharnchar
  • nvarcharnvarchar
  • binarybinary
  • varbinaryvarbinary
  • texttext
  • ntextntext
  • imagemimage

Quando outros tipos de dados são convertidos em binary ou varbinary, os dados são preenchidos ou truncados à esquerda.When other data types are converted to binary or varbinary, the data is padded or truncated on the left. O preenchimento é realizado por meio de zeros hexadecimais.Padding is achieved by using hexadecimal zeros.

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.Converting data to the binary and varbinary data types is useful if binary data is the easiest way to move around data. 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.At some point, you might convert a value type to a binary value of large enough size and then convert it back. Essa conversão sempre resultará no mesmo valor se ambas as conversões estiverem acontecendo na mesma versão de SQL ServerSQL Server.This conversion always results in the same value if both conversions are taking place on the same version of SQL ServerSQL Server. A representação binária de um valor pode ser alterada de uma versão para outra do SQL ServerSQL Server.The binary representation of a value might change from version to version of SQL ServerSQL Server.

Você pode converter int, smallint e tinyint em binary ou varbinary.You can convert int, smallint, and tinyint to binary or varbinary. Se converter o valor binary de volta para um valor inteiro, esse valor será diferente do valor inteiro original se houver truncamento.If you convert the binary value back to an integer value, this value will be different from the original integer value if truncation has occurred. Por exemplo, a instrução SELECT a seguir mostra que o valor inteiro 123456 é armazenado como um binário 0x0001e240:For example, the following SELECT statement shows that the integer value 123456 is stored as a binary 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:However, the following SELECT statement shows that if the binary target is too small to hold the entire value, the leading digits are silently truncated so that the same number is stored as 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:The following batch shows that this silent truncation can affect arithmetic operations without raising an error:

DECLARE @BinaryVariable2 BINARY(2);  
  
SET @BinaryVariable2 = 123456;  
SET @BinaryVariable2 = @BinaryVariable2 + 1;  
  
SELECT CAST( @BinaryVariable2 AS INT);  
GO  

O resultado final é 57921, não 123457.The final result is 57921, not 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 ServerSQL Server.Conversions between any data type and the binary data types are not guaranteed to be the same between versions of SQL ServerSQL Server.

Confira tambémSee also

CAST e CONVERT (Transact-SQL)CAST and CONVERT (Transact-SQL)
Conversão de tipo de dados (Mecanismo de Banco de Dados)Data Type Conversion (Database Engine)
Tipos de dados (Transact-SQL)Data Types (Transact-SQL)