SET_BIT (Transact SQL)
S’applique à : point de terminaison d’analyse SQL Server 2022 (16.x)
Azure SQL Database
Azure SQL Managed Instance
SQL dans Microsoft Fabric Warehouse
SET_BIT
retourne expression_value décalage par le bit défini par bit_offset. La valeur de bit par défaut est 1, ou est définie par bit_value.
Conventions de la syntaxe Transact-SQL
Syntaxe
SET_BIT ( expression_value, bit_offset )
SET_BIT ( expression_value, bit_offset, bit_value )
Arguments
expression_value
Toute expression entière ou binaire qui n’est pas un Large Object (LOB).
bit_offset
Tout entier.
Types de retour
Même type que expression_value.
Le paramètre bit_offset est utilisé pour identifier le nième bit des données à définir. Dans les types entiers, le 0
ième bit est le bit le moins significatif. Dans les types binaires, le 0
ième bit est le bit le moins significatif dans l’octet le plus à droite.
bit_value peut être un entier ou un bit. Toutefois, les seules valeurs valides pour bit_value sont 1 et 0, quel que soit le type de données. SET_BIT génère une erreur si bit_value n’est pas 1 ou 0 ou Null.
SET_BIT génère une erreur si bit_offset est négatif ou supérieur au dernier bit dans le type de données.
Remarques
Les fonctionnalités de requête distribuée pour les fonctions de manipulation de bits au sein d’un serveur lié ou de requêtes ad hoc (OPENQUERY
) ne sont pas prises en charge.
Les types de données objet volumineux (LOB) dans le moteur de base de données peuvent stocker des données qui dépassent 8 000 octets. Ces types de données stockent des données sur une page de données de dépassement de ligne. Un métier englobe également les types de données qui stockent des données sur des structures de page métier dédiées, qui utilisent un texte ou un pointeur d’image de références en ligne aux pages de données métier. Pour plus d’informations sur le stockage de données, consultez le guide d’architecture Pages et étendues.
Les fonctions de manipulation de bits fonctionnent sur le tinyint, smallint , int, bigint, binary(n), et varbinary(n) types de données. Les types de données LOB (Large Object), tels que varchar(max), nvarchar(max), varbinary(max), image, ntext, text, xmlet les types BLOB CLR (Common Language Runtime) ne sont pas pris en charge.
Exemples
R. Utiliser SET_BIT pour modifier une valeur
Dans cet exemple, le troisième bit (à l’offset 2, index de base zéro) est défini sur 1
.
SELECT SET_BIT ( 0x00, 2 ) as VARBIN1;
Le résultat est 0x04
. Cela est dû au fait qu’expression_value est 0x00
convertie en 0000
. SET_BIT change son troisième bit (offset 2) en 1, ce qui donne 0100
. Cette valeur binaire est ensuite retournée comme 4
en représentation hexadécimale.
B. Utiliser SET_BIT pour modifier une valeur avec une bit_value personnalisée
Dans cet exemple, bit_value est définie sur 0 au lieu de la valeur par défaut 1.
SELECT SET_BIT ( 0xabcdef, 0, 0 ) as VARBIN2;
Le résultat est 0xABCDEE
.
expression_value est convertie en binaire, c’est-à-dire 1010 1011 1100 1101 1110 1111
. SET_BIT change le premier bit en 0, et le résultat est retourné au format hexadécimal.