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

SE APLICA A: síSQL Server síAzure SQL Database síAzure SQL Data Warehouse síAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

Tipos de datos binarios de longitud fija o variable.Binary data types of either fixed length or variable length.

ArgumentosArguments

binary [ (n) ] Datos binarios de longitud fija con una longitud de n bytes, donde n es un valor que oscila entre 1 y 8000.binary [ ( n ) ] Fixed-length binary data with a length of n bytes, where n is a value from 1 through 8,000. El tamaño de almacenamiento es de n bytes.The storage size is n bytes.

varbinary [ (n | max) ] Datos binarios de longitud variable.varbinary [ ( n | max) ] Variable-length binary data. n puede ser un valor de 1 a 8000.n can be a value from 1 through 8,000. max indica que el tamaño máximo de almacenamiento es de 2^31-1 bytes.max indicates that the maximum storage size is 2^31-1 bytes. El tamaño de almacenamiento es la longitud real de los datos especificados + 2 bytes.The storage size is the actual length of the data entered + 2 bytes. Los datos especificados pueden tener una longitud de 0 bytes.The data that is entered can be 0 bytes in length. El sinónimo de ANSI SQL para varbinary es binary varying.The ANSI SQL synonym for varbinary is binary varying.

NotasRemarks

Cuando no se especifica n en una instrucción de definición de datos o de declaración de variables, la longitud predeterminada es 1.The default length is 1 when n isn't specified in a data definition or variable declaration statement. Cuando no se especifica n con la función CAST, la longitud predeterminada es 30.When n isn't specified with the CAST function, the default length is 30.

Tipo de datosData type Usar cuando...Use when ...
binariobinary los tamaños de las entradas de datos de columna sean coherentes.the sizes of the column data entries are consistent.
varbinaryvarbinary los tamaños de las entradas de datos de columna varíen considerablemente.the sizes of the column data entries vary considerably.
varbinary(max)varbinary(max) las entradas de datos de columna superen los 8000 bytes.the column data entries exceed 8,000 bytes.

Convertir datos binary y varbinaryConverting binary and varbinary data

Al convertir datos de un tipo de datos de cadena a un tipo de datos binary o varbinary de diferente longitud, SQL ServerSQL Server rellena o trunca los datos de la derecha.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. Los tipos de datos string son los siguientes:These string data types are:

  • charchar
  • varcharvarchar
  • ncharnchar
  • nvarcharnvarchar
  • binariobinary
  • varbinaryvarbinary
  • textotext
  • ntextntext
  • imagenimage

Cuando se convierten a binary o varbinary otros tipos de datos, los datos se rellenan o se truncan por la izquierda.When other data types are converted to binary or varbinary, the data is padded or truncated on the left. El relleno se realiza con ceros hexadecimales.Padding is achieved by using hexadecimal zeros.

La conversión de datos a tipos de datos binary y varbinary es útil si el dato binary es la forma más sencilla de mover datos.Converting data to the binary and varbinary data types is useful if binary data is the easiest way to move around data. En algún momento, puede convertir un tipo de valor a un valor binario de tamaño lo suficientemente grande y luego devolverlo a su tipo inicial.At some point, you might convert a value type to a binary value of large enough size and then convert it back. Esta conversión siempre da como resultado el mismo valor si ambas conversiones están teniendo lugar en la misma versión 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. La representación binaria de un valor puede cambiar entre versiones de SQL ServerSQL Server.The binary representation of a value might change from version to version of SQL ServerSQL Server.

Puede convertir int, smallint y tinyint en binary o varbinary.You can convert int, smallint, and tinyint to binary or varbinary. Si convierte el valor binary de vuelta a un valor entero, este valor será diferente del valor entero original si se ha producido un truncamiento.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 ejemplo, la siguiente instrucción SELECT muestra que el valor entero 123456 se almacena como un valor binario 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) );  

En cambio, en la siguiente instrucción SELECT se muestra que, si el destino de tipo binary es demasiado pequeño para contener el valor completo, los dígitos a la izquierda se truncarán sin avisar; de esta forma, el mismo número se almacena 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) );  

El siguiente lote muestra que este truncamiento puede afectar a las operaciones aritméticas sin generar un error: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  

El resultado final es 57921 y no 123457.The final result is 57921, not 123457.

Nota

No se garantiza que las conversiones entre cualquier tipo de datos y los tipos de datos binary sean las mismas entre diferentes versiones de 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.

Vea tambiénSee also

CAST y CONVERT (Transact-SQL)CAST and CONVERT (Transact-SQL)
Conversiones de tipos de datos (motor de base de datos)Data Type Conversion (Database Engine)
Tipos de datos (Transact-SQL)Data Types (Transact-SQL)