binary et varbinary (Transact-SQL)
S’applique à : point de terminaison d’analytique SQL Server Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Platform System (PDW)
SQL Analytics dans Microsoft Fabric
Warehouse 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.