Condividi tramite


Operatori bit per bit (Transact-SQL)

Si applica a: SQL Server database SQL di Azure Istanza gestita di SQL di Azure endpoint di analisi SQL di Azure Synapse Analytics Platform System (PDW) in Microsoft Fabric Warehouse in Microsoft Fabric

Gli operatori bit per bit eseguono manipolazioni di bit tra due espressioni di uno dei tipi di dati della categoria integer.

Gli operatori bit per bit convertono due valori interi in bit binari, eseguono l'operazione AND, ORo NOT su ogni bit, generando un risultato. Quindi il risultato viene convertito in un valore Integer.

Ad esempio, l'intero 170 viene convertito in binario 1010 1010.

L'intero 75 viene convertito in binario 0100 1011.

Operatore Matematica bit per bit
AND

Se i bit in qualsiasi posizione sono entrambi 1, il risultato è 1.
1010 1010 = 170
0100 1011 = 75
-----------------
0000 1010 = 10
OPPURE

Se uno dei bit in qualsiasi posizione è 1, il risultato è 1.
1010 1010 = 170
0100 1011 = 75
-----------------
1110 1011 = 235
NOT

Inverte il valore di bit in ogni posizione di bit.
1010 1010 = 170
-----------------
0101 0101 = 85

Gli articoli seguenti forniscono altre informazioni sugli operatori bit per bit disponibili nella motore di database:

Gli operatori bit per bit seguenti sono stati introdotti in SQL Server 2022 (16.x):

Gli operandi per gli operatori bit per bit possono essere uno dei tipi di dati delle categorie di tipi di dati integer o binary string (ad eccezione del tipo di dati image ), ad eccezione del fatto che entrambi gli operandi non possono essere uno dei tipi di dati della categoria di tipi di dati stringa binaria. Nella tabella seguente vengono descritti i tipi di dati supportati per gli operandi.

Operando sinistro Operando destro
binary int, smallint o tinyint
bit int, smallint, tinyint o bit
bigint bigint, int, smallint, tinyint, binary o varbinary
int int, smallint, tinyint, binary o varbinary
smallint int, smallint, tinyint, binary o varbinary
tinyint int, smallint, tinyint, binary o varbinary
varbinary int, smallint o tinyint

Vedi anche