Fonctions de manipulation de bits

S’applique à : point de terminaison d’analyse SQL Server 2022 (16.x) Azure SQL Database Azure SQL Managed Instance SQL dans Microsoft Fabric Warehouse

Les fonctions de manipulation de bits telles que le déplacement, la récupération (obtention), le paramétrage ou le comptage de bits uniques au sein d’un entier ou d’une valeur binaire, vous permettent de traiter et de stocker les données plus efficacement qu’avec des bits individuels.

Un bit a deux valeurs (1 ou 0, qui représentent on ou off ou true ou false). Un octet est constitué d’une séquence de 8 bits. Les fonctions de manipulation de bits dans SQL Server traitent le bit le plus « à gauche » dans un octet comme le plus grand (le plus significatif). Pour les fonctions de manipulation de bits, les bits sont numérotés de droite à gauche, avec le bit 0 le plus à droite et le plus petit et le bit 7 étant le plus à gauche et le plus grand.

Par exemple, une séquence binaire de 00000111 est l’équivalent décimal du nombre 7. Vous pouvez calculer cela à l’aide de puissances de 2 comme suit :

00000111 = (2^2 + 2^1 + 2^0 = 4 + 2 + 1 = 7)

Ce que cela signifie dans la pratique est que lorsque SQL Server stocke cette valeur comme 11100000 (inversé par octet), les fonctions de manipulation de bits le traiteront comme 00000111.

Lorsque vous examinez plusieurs octets, le premier octet (lecture de gauche à droite) est le plus grand.

Vous pouvez utiliser les images suivantes pour visualiser comment les fonctions de manipulation de bits de SQL Server interprètent les valeurs d’expression de bits et d’octets et les décalages de bits.

int

Diagramme affichant une valeur int lorsque 4 octets représentent le binaire inversé de chaque octet de gauche ) droite.

smallint

Diagramme affichant une faible valeur int lorsque le premier octet représente des bits de 15 à 8 et le second octet représente des bits de 7 à 0.

Fonctions

Il existe cinq fonctions disponibles pour manipuler des bits dans SQL Server :

Les cinq fonctions sont destinées à fonctionner sur des types de données tinyint, smallint, int, bigint, binaire(n) et varbinaire(n).

Les types suivants ne sont pas pris en charge : varchar, nvarchar, image, ntext, texte, xml et table.

Remarques

Dans l’implémentation initiale, la fonctionnalité Requête distribuée pour les fonctions de manipulation de bits au sein de requêtes de serveur lié ou ad hoc (OPENQUERY) ne sera pas prise en charge.