Funzioni di modifica dei bit

Si applica a: endpoint di analisi SQL Server 2022 (16.x) database SQL di Azure Istanza gestita di SQL di Azure SQL in Microsoft FabricWarehouse in Microsoft Fabric

Le funzioni di manipolazione dei bit, ad esempio lo spostamento, il recupero (ottenimento), l'impostazione o il conteggio di bit singoli all'interno di un valore intero o binario, consentono di elaborare e archiviare i dati in modo più efficiente rispetto ai singoli bit.

Un bit ha due valori (1 o 0, che rappresentano on o off o true o false). Un byte è costituito da una sequenza di 8 bit. Le funzioni di manipolazione dei bit in SQL Server considerano il bit più "a sinistra" in un byte come il più grande (il più significativo). Per le funzioni di manipolazione dei bit, i bit vengono numerati da destra a sinistra, con il bit 0 che è il più piccolo e il bit 7 quello più a sinistra e più grande.

Ad esempio, una sequenza binaria di 00000111 è l'equivalente decimale del numero 7. È possibile calcolare questo valore usando le potenze di 2 come indicato di seguito:

00000111 = (2^2 + 2^1 + 2^0 = 4 + 2 + 1 = 7)

Ciò significa che, mentre SQL Server archivia questo valore come 11100000 (invertito da byte), le funzioni di manipolazione dei bit lo considerano come se fosse 00000111.

Quando si osservano più byte, il primo byte (lettura da sinistra a destra) è il più grande.

È possibile usare le immagini seguenti per visualizzare il modo in cui le funzioni di manipolazione dei bit di SQL Server interpretano i valori delle espressioni di bit e byte e gli offset di bit.

int

Diagram showing an int value where 4 bytes represent the reversed binary of each byte from left to right.

smallint

Diagram showing a small int value where the first byte represents bits 15 to 8, and the second byte represents bits 7 to 0.

Funzioni

Sono disponibili cinque funzioni per la modifica dei bit in SQL Server:

Tutte e cinque le funzioni sono pensate per operare su tipi di dati tinyint, smallint, int, bigint, binary(n) e varbinary(n).

I tipi seguenti non sono supportati: varchar, nvarchar, image, ntext, text, xml e table.

Osservazioni:

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