SET_BIT (Transact SQL)

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

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 0ième bit est le bit le moins significatif. Dans les types binaires, le 0iè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.

Voir aussi