Partager via


^ (OR exclusif au niveau du bit) (Transact-SQL)

Effectue une opération OR exclusive au niveau du bit entre deux valeurs entières.

Icône Lien de rubrique Conventions de la syntaxe de Transact-SQL

Syntaxe

expression ^ expression

Arguments

  • expression
    Toute expression valide d'un des types de données de la catégorie des types de données integer (entier), ou de type bit, binary ou varbinary. expression est traitée comme un nombre binaire pour l'opération au niveau du bit.

    [!REMARQUE]

    Un seul argument expression peut être du type binary ou du type varbinary dans une opération au niveau du bit.

Types des résultats

int si les valeurs d'entrée sont de type int.

smallint si les valeurs d'entrée sont de type smallint.

tinyint si les valeurs d'entrée sont de type tinyint.

Notes

L'opérateur au niveau du bit ^ effectue une opération OR logique au niveau du bit entre les deux expressions, évaluant chaque bit correspondant dans les deux expressions. Dans le résultat, les bits prennent la valeur 1 si l'un ou l'autre (mais pas les deux) des bits correspondants (pour la position en cours d'évaluation) dans les deux expressions d'entrées ont une valeur de 1 Si les deux bits ont pour valeur 0 ou 1, le bit du résultat prend la valeur 0.

Si les expressions de droite et de gauche ont des types de données integer (entier) différents (par exemple, l'expression de gauche est de type smallint et l'expression de droite est de type int), l'argument du type de données le plus petit est converti dans le type de données le plus grand. Dans ce cas, l'expression smallint est convertie en int.

Exemples

L'exemple suivant crée une table avec le type de données int pour stocker les valeurs d'origine et insère deux valeurs dans une ligne.

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 requête suivante effectue l'opération OR exclusif au niveau du bit sur les colonnes a_int_value et b_int_value.

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

Voici l'ensemble de résultats obtenu :

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

(1 row(s) affected)

La représentation binaire de 170 (a_int_value ou A) est 0000 0000 1010 1010. La représentation binaire de 75 (b_int_value ou B) est 0000 0000 0100 1011. L'exécution de l'opération OR exclusif au niveau du bit sur ces deux valeurs donne le résultat binaire 0000 0000 1110 0001, soit 225 en notation décimale.

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

Voir aussi

Référence

Expressions (Transact-SQL)

Opérateurs (Transact-SQL)

Opérateurs au niveau du bit (Transact-SQL)

^= (Bitwise Exclusive OR EQUALS) (Transact-SQL)

Opérateurs composés (Transact-SQL)