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 expression_value offset dal bit definito da bit_offset. Il valore del bit predefinito è 1 o viene impostato da bit_value.
Convenzioni relative alla sintassi Transact-SQL
Sintassi
SET_BIT ( expression_value, bit_offset )
SET_BIT ( expression_value, bit_offset, bit_value )
Argomenti
expression_value
Qualsiasi espressione integer o binaria diversa da un Large Object (LOB).
bit_offset
Qualsiasi valore integer.
Tipi restituiti
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.
Osservazioni:
Le funzionalità di query distribuite per le funzioni di manipolazione dei bit all'interno del server collegato o delle query ad hoc (OPENQUERY
) non sono supportate.
I tipi di dati LOB (Large Object) nel motore di database possono archiviare dati che superano 8.000 byte. Questi tipi di dati archiviano i dati in una pagina di overflow di righe dati. Un line-of-business include anche i tipi di dati che archivia i dati in strutture di pagine LINEB dedicate, che usano un puntatore di testo o immagine di riferimenti in riga alle pagine di dati LINEB. Per altre informazioni sull'archiviazione dei dati, vedere la guida all'architettura delle pagine e degli extent .
Le funzioni di manipolazione dei bit operano sui tinyint, smallint, int, bigint, binary(n)e varbinary(n). I tipi di dati LOB (Large Object), ad esempio varchar(max), nvarchar(max), varbinary(max), image, ntext, text, xmle tipi BLOB CLR (Common Language Runtime).
Esempi
R. Usare SET_BIT per modificare un valore
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.
B. Usare SET_BIT per modificare un valore con un valore bit_value personalizzato
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.