binary et varbinary (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Point de terminaison analytique SQL dans Microsoft FabricEntrepôt dans Microsoft Fabric

Données de type binaire de longueur fixe (binary) ou variable (varbinary).

Arguments

binary [ ( n ) ]

Données binaires de longueur fixe de n octets, où n est une valeur comprise entre 1 et 8 000. La taille de stockage est égale à n octets.

varbinary [ ( n | max ) ]

Données binaires de longueur variable. n peut être une valeur comprise entre 1 et 8 000. max indique que la taille de stockage maximale est de 2^31-1 octets. La taille mémoire est la longueur réelle des données entrées, plus deux octets. Les données entrées peuvent avoir une longueur de 0 octet. Le synonyme SQL ANSI de varbinary est binary varying.

Remarques

Quand la valeur de n n’est pas spécifiée dans une définition de données ou une instruction de déclaration de variable, la longueur par défaut est 1. Quand la valeur de n n’est pas précisée avec la fonction CAST, la longueur par défaut est 30.

Type de données Utilisation quand...
binary les tailles des entrées de données de la colonne sont cohérentes.
varbinary les tailles des entrées de données de la colonne varient considérablement.
varbinary(max) la taille des entrées de données de la colonne dépasse 8 000 octets.

Convertir des données binary et varbinary

Lors de la conversion de données de type chaîne en type binary ou varbinary de longueur différente, SQL Server complète ou tronque les données à droite. Ces types de données chaîne sont :

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

Quand d’autres types de données sont convertis en binary ou varbinary, les données sont complétées ou tronquées à gauche. Elles sont complétées avec des zéros hexadécimaux.

La conversion de données en types de données binary et varbinary est utile si les données binary constituent le moyen de déplacement de données le plus pratique. À un moment donné, vous pouvez convertir un type de valeur en une valeur binaire de taille suffisante et puis la reconvertir à nouveau. Cette conversion génère toujours des résultats de même valeur si les deux conversions s’effectuent sur la même version de SQL Server. La représentation binaire d'une valeur peut varier d'une version à l'autre de SQL Server.

Vous pouvez convertir les types int, smallint et tinyint en type binary ou varbinary. Si vous reconvertissez la valeur binary en un entier, cette valeur sera différente de la valeur entière initiale s’il y a eu troncation. Par exemple, l’instruction SELECT suivante montre que la valeur entière 123456 est généralement stockée sous forme binaire 0x0001e240 :

SELECT CAST( 123456 AS BINARY(4) );

Cependant, l’instruction SELECT suivante montre que si la cible binary est trop petite pour traiter la valeur entière, les chiffres les plus à gauche sont tronqués discrètement de façon à ce que le même nombre soit stocké en tant que 0xe240 :

SELECT CAST( 123456 AS BINARY(2) );

L'instruction suivante montre que la troncation discrète peut affecter les opérations arithmétiques sans engendrer d'erreur :

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

Le résultat final est 57921, et non pas 123457.

Notes

Les conversions entre un type de données quelconque et les types de données binary ne sont pas nécessairement identiques dans toutes les versions de SQL Server.

Limites

Actuellement, dans Microsoft Fabric, seul varbinary(n) est pris en charge. Les types de données binary et varbinary(max) ne sont pas pris en charge.

Voir aussi