Condividi tramite


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.