binary y varbinary (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Punto de conexión de análisis SQL en Microsoft FabricAlmacenamiento en Microsoft Fabric

Tipos de datos binarios de longitud fija o variable.

Argumentos

binary [ ( n ) ]

Datos binarios de longitud fija con una longitud de n bytes, donde n es un valor entre 1 y 8.000. El tamaño de almacenamiento es de n bytes.

varbinary [ ( n | max ) ]

Datos binarios de longitud variable. n puede ser un valor de 1 a 8000. max indica que el tamaño máximo de almacenamiento es de 2^31-1 bytes. El tamaño de almacenamiento es la longitud real de los datos especificados + 2 bytes. Los datos especificados pueden tener una longitud de 0 bytes. El sinónimo de ANSI SQL para varbinary es binary varying.

Observaciones

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. Cuando no se especifica n con la función CAST, la longitud predeterminada es 30.

Tipo de datos Usar cuando...
binary los tamaños de las entradas de datos de columna sean coherentes.
varbinary los tamaños de las entradas de datos de columna varíen considerablemente.
varbinary(max) las entradas de datos de columna superen los 8000 bytes.

Convertir datos binary y varbinary

Al convertir datos de un tipo de datos de cadena a un tipo de datos binary o varbinary de diferente longitud, SQL Server rellena o trunca los datos de la derecha. Los tipos de datos string son los siguientes:

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

Cuando se convierten a binary o varbinary otros tipos de datos, los datos se rellenan o se truncan por la izquierda. El relleno se realiza con ceros hexadecimales.

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. 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. Esta conversión siempre da como resultado el mismo valor si ambas conversiones están teniendo lugar en la misma versión de SQL Server. La representación binaria de un valor puede cambiar entre versiones de SQL Server.

Puede convertir int, smallint y tinyint en binary o 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. Por ejemplo, la siguiente instrucción SELECT muestra que el valor entero 123456 se almacena como un valor binario 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:

SELECT CAST( 123456 AS BINARY(2) );

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

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 Server.

Limitaciones

Actualmente, en Microsoft Fabric, solo se admite varbinary(n). No se admiten los tipos de datos binary y varbinary(max).

Consulte también