& (AND bit per bit) (Transact-SQL)

Esegue un'operazione con AND logico bit per bit tra due valori integer.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

expression & expression

Argomenti

  • expression
    Qualsiasi espressione valida con uno qualsiasi dei tipi di dati appartenenti alla categoria dei tipi di dati integer oppure con tipo di dati bit, binary o varbinary. L'espressione specificata in expression viene elaborata come numero binario per l'operazione bit per bit.

    [!NOTA]

    Una sola delle espressioni specificate in expression può essere di tipo binary o varbinary in un'operazione bit per bit.

Tipi restituiti

int se i valori di input sono di tipo int.

smallint se i valori di input sono di tipo smallint.

tinyint se i valori di input sono di tipo tinyint o bit.

Osservazioni

L'operatore & bit per bit esegue un'operazione con AND logico bit per bit tra due espressioni, considerando tutti i bit corrispondenti in entrambe le espressioni. I bit del risultato vengono impostati su 1 se, e solo se, il valore del bit in fase di risoluzione di entrambe le espressioni di input è uguale a 1. In caso contrario, il bit del risultato viene impostato su 0.

Se alle due espressioni è applicato un tipo di dati integer diverso, ad esempio il parametro expression di sinistra è di tipo smallint e il parametro expression di destra e di tipo int, l'argomento con il tipo di dati di dimensioni minori viene convertito nel tipo di dati di dimensioni maggiori. In questo caso, il parametro expression di tipo smallint viene convertito in un'espressione di tipo int.

Esempi

Nell'esempio seguente viene creata una tabella con il tipo di dati int per l'archiviazione dei valori e i due valori vengono inseriti in un'unica riga.

USE tempdb;
GO
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES 
      WHERE TABLE_NAME = 'bitwise')
   DROP TABLE bitwise;
GO
CREATE TABLE bitwise
( 
a_int_value int NOT NULL,
b_int_value int NOT NULL
);
GO
INSERT bitwise VALUES (170, 75);
GO

La query esegue l'operazione con AND bit per bit tra le colonne a_int_value e b_int_value.

USE tempdb;
GO
SELECT a_int_value & b_int_value
FROM bitwise;
GO

Set di risultati:

----------- 
10          

(1 row(s) affected)

La rappresentazione binaria di 170 (a_int_value o A) è 0000 0000 1010 1010. La rappresentazione binaria di 75 (b_int_value o B) è 0000 0000 0100 1011. L'esecuzione dell'operazione con AND bit per bit su questi valori genera il risultato binario 0000 0000 0000 1010, corrispondente al valore decimale 10.

(A & B)
0000 0000 1010 1010
0000 0000 0100 1011
-------------------
0000 0000 0000 1010