Fonctions de manipulation de bits

S’applique à :SQL Server 2022 (16.x) Azure SQL DatabaseAzure SQL Managed InstancePoint de terminaison analytique SQL dans Microsoft FabricEntrepôt dans Microsoft Fabric

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

Diagram showing an int value where 4 bytes represent the reversed binary of each byte from left to right.

smallint

Diagram showing a small int value where the first byte represents bits 15 to 8, and the second byte represents bits 7 to 0.

Functions

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.