^ (OR esclusivo bit per bit) (Transact-SQL)

Esegue un'operazione con OR esclusivo 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 di qualsiasi tipo di dati della categoria integer o del tipo di dati bit o binary o varbinary. Per l'operazione bit per bit expression viene considerato numero binario.

[!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.

Osservazioni

L'operatore bit per bit ^ esegue un'operazione con OR esclusivo logico bit per bit tra due espressioni, considerando tutti i bit corrispondenti in entrambe le espressioni. I bit nel risultato sono impostati su 1 se il valore di un solo bit (per il bit in fase di risoluzione) nelle espressioni di input è uguale a 1. Se il valore di entrambi i bit è 0 o 1, il bit nel risultato viene impostato su 0.

Se alle due espressioni è applicato un tipo di dati integer diverso, ad esempio l'espressione di sinistra specificata da expression è di tipo smallint e quella di destra specificata da expression è di tipo int, l'argomento del tipo di dati di livello inferiore viene convertito nel tipo di dati di livello superiore. 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 che utilizza il tipo di dati int per archiviare i valori originali e vengono inseriti due valori in una sola 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 seguente esegue l'operazione con OR esclusivo bit per bit sulle colonne a_int_value e b_int_value.

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

Set di risultati:

----------- 
225         

(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 OR esclusivo bit per bit su questi due valori genera il risultato binario 0000 0000 1110 0001, che corrisponde al valore decimale 225.

(A ^ B)   
         0000 0000 1010 1010
         0000 0000 0100 1011
         -------------------
         0000 0000 1110 0001

Vedere anche

Riferimento

Espressioni (Transact-SQL)
Operatori (Transact-SQL)

Altre risorse

Operatori bit per bit (Motore di database)

Guida in linea e informazioni

Assistenza su SQL Server 2005