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 offset 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
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.
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.