SET_BIT (Transact SQL)
Si applica a: SQL Server 2022 (16.x) database SQL di Azure Istanza gestita di SQL di Azure endpoint di analisi SQL in Microsoft Fabric Warehouse in Microsoft Fabric
SET_BIT restituisce l'offset di expression_value dal bit definito da bit_offset. Il valore del bit predefinito è 1 o viene impostato da bit_value.
Convenzioni relative alla sintassi Transact-SQL
SET_BIT ( expression_value, bit_offset )
SET_BIT ( expression_value, bit_offset, bit_value )
Qualsiasi espressione integer o binaria diversa da un Large Object (LOB).
Qualsiasi valore integer.
Stesso tipo di expression_value.
Il parametro bit_offset viene usato per identificare il bit dei dati da impostare. Nei tipi integer, il bit 0
è quello meno significativo. Nei tipi binari, il bit 0
è quello meno significativo nel byte più a destra.
bit_value può essere un valore integer o un bit. Tuttavia, gli unici valori validi per bit_value sono 1 e 0, indipendentemente dal tipo di dati. SET_BIT genererà un errore se bit_value non è 1 o 0 o Null.
SET_BIT genererà un errore se bit_offset è negativo o maggiore dell'ultimo bit nel tipo di dati.
Nell'implementazione iniziale, non è supportata la funzionalità Query distribuita per le funzioni di manipolazione dei bit all'interno di un server collegato o di query ad hoc (OPENQUERY).
In questo esempio il terzo bit (in corrispondenza dell'offset 2, indice in base zero) viene impostato su 1
.
SELECT SET_BIT ( 0x00, 2 ) as VARBIN1;
Il risultato è 0x04
. Questo perché il valore expression_value di 0x00
viene convertito in 0000
. SET_BIT modifica il terzo bit (offset 2) in 1, rendendolo 0100
. Questo valore binario viene quindi restituito come 4
nella rappresentazione esadecimale.
In questo esempio il valore bit_value viene impostato su 0 anziché sul valore predefinito 1.
SELECT SET_BIT ( 0xabcdef, 0, 0 ) as VARBIN2;
Il risultato è 0xABCDEE
. Il valore expression_value viene convertito in binario, ovvero 1010 1011 1100 1101 1110 1111
. SET_BIT modifica il primo bit in 0 e il risultato viene restituito in formato esadecimale.