Partager via


^ (OR exclusif au niveau du bit)

✅ Azure Stream Analytics ✅ Fabric Eventstream

Effectue une opération OR (XOR) au niveau du bit entre deux valeurs entières, en évaluant chaque bit correspondant des deux expressions.

Syntaxe

expression ^ expression

Les arguments

expression

Expression valide des types de données bit ou bigint. L’expression est traitée comme un nombre binaire pour l’opération au niveau du bit.

Types de retour

bit si les deux valeurs d’entrée sont bit.

bigint si une ou les deux valeurs d’entrée sont bigintes.

Remarques

L’opérateur au niveau du bit ^ effectue une opération OR logique au niveau du bit entre les deux expressions, en prenant chaque bit correspondant pour les deux expressions. Les bits du résultat sont définis sur 1 si les bits (mais pas les deux) (pour le bit actuel en cours de résolution) dans les expressions d’entrée ont la valeur 1 ; sinon, le bit dans le résultat est défini sur 0.

Pour illustration, la représentation binaire de 170 est 0000 000 1010 1010. La représentation binaire de 75 est 0000 0000 0100 1011. L’exécution de l’opération XOR au niveau du bit sur ces deux valeurs produit le résultat binaire 0000 000 1110 0001, qui est décimal 225.

(170 ^ 75)
0000 0000 1010 1010
0000 0000 0100 1011
-------------------
0000 0000 1110 0001

Il est à noter que la conversion d’une valeur FLOAT en BIGINT et l’application d’un opérateur au niveau du bit sur celui-ci ne retourne pas le même résultat que le cast vers BIT et l’application de la même opérateur :

  • Première option : 170 ^ 75.0 => 170 ^ 75 = 225
  • Deuxième option : 170 ^ 75.0 => 170 ^ 1 = 171

Consultez la vue d’ensemble des types de données pour connaître les règles de conversion en bits.

Exemples

Avec un jeu de données d’entrée commun :

WITH MyCTE AS (
	SELECT
		CAST(0 AS BIT) AS bit0,
		CAST(1 AS BIT) AS bit1,
		CAST(NULL AS BIT) AS bitN,
		CAST(0 AS BIGINT) AS bigint0,
		CAST(1 AS BIGINT) AS bigint1,
		CAST(NULL AS BIGINT) AS bigintN
	FROM input
)

Application de l’opérateur sur les expressions de bits :

SELECT
	bit0,
	bit1,
	bitN,
	bit0 ^ bit0 AS XOR00,
	bit0 ^ bit1 AS XOR01,
	bit1 ^ bit0 AS XOR10,
	bit1 ^ bit1 AS XOR11,
	bitN ^ bit1 AS XORnull
INTO bitXOR
FROM MyCTE

Retours :

bit0 bit1 bitN XOR00 XOR01 XOR10 XOR11 XORnull
faux vrai ZÉRO faux vrai vrai faux ZÉRO

Application de l’opérateur sur les expressions bigint :

SELECT
	bigint0,
	bigint1,
	bigintN,
	bigint0 ^ bigint0 AS XOR00,
	bigint0 ^ bigint1 AS XOR01,
	bigint1 ^ bigint0 AS XOR10,
	bigint1 ^ bigint1 AS XOR11,
	bigintN ^ bigint1 AS XORnull,
	170 ^ 75 AS XORvalues
INTO bigintXOR
FROM MyCTE

Retours :

bigint0 bigint1 bigintN XOR00 XOR01 XOR10 XOR11 XORnull XORvalues
0 1 ZÉRO 0 1 1 0 ZÉRO 225

Validation des types de sortie :

SELECT
	GetType(bit0 ^ bit0) AS XORtype_bit,
	GetType(bigint0 ^ bigint0) AS XORtype_bigint,
	GetType(bit0 ^ bigint0) AS XORtype_mixed
INTO typesXOR
FROM MyCTE

Retours :

XORtype_bit XORtype_bigint ORtype_mixed
mors bigint bigint

Voir aussi