T-SQL XOR opérateur

Existe-t-il un opérateur XOR ou une fonction équivalente dans SQL Server (T-SQL)?

45
demandé sur Alex KeySmith 2011-03-24 00:05:39

7 réponses

SELECT 170 ^ 75

le résultat est 225.

logique XOR, utilisez le mot-clé et PAS TOUS, c'est à dire

WHERE 5 > ANY (SELECT foo) AND NOT (5 > ALL (SELECT foo))
48
répondu Nathan Rivera 2011-03-23 21:18:30

en utilisant l'algèbre booléenne, il est facile de montrer que:

A xor B = (not A and B) or (A and not B)


A B | f = notA and B | g = A and notB | f or g | A xor B    
----+----------------+----------------+--------+--------    
0 0 | 0              | 0              | 0      | 0    
0 1 | 1              | 0              | 1      | 1    
1 0 | 0              | 1              | 1      | 1    
1 1 | 0              | 0              | 0      | 0
28
répondu Alberto De Caro 2013-02-06 14:34:04

Comme précisé dans votre commentaire, Spacemoses, vous avez déclaré un exemple: OÙ (Remarque est nulle) ^ (ID est null). Je ne vois pas pourquoi vous avez choisi d'accepter toute réponse donnée ici que répondre à cela. Si j'avais besoin d'un xor pour ça, je pense que je devrais utiliser la logique et/ou équivalent:

WHERE (Note is null and ID is not null) OR (Note is not null and ID is null)

c'est l'équivalent de:

WHERE (Note is null) XOR (ID is null)

quand ' XOR ' n'est pas disponible.

14
répondu Shawn Kovac 2016-01-22 16:22:37

MS SQL ne forme courte (depuis SQL Server 2012):

1=iif( a=b ,1,0)^iif( c=d ,1,0)
10
répondu was 2016-11-16 13:56:47

L'opérateur xor est ^

Par exemple: SELECT A ^ B où A et B sont des types de données de catégorie entière.

3
répondu Sebi 2012-07-18 20:06:54
1
répondu SQLMenace 2011-03-23 21:14:07

à Partir de votre commentaire:

Exemple: OÙ (Remarque est nulle) ^ (ID est null)

vous pourriez probablement essayer:

where
   (case when Note is null then 1 else 0 end)
 <>(case when ID is null then 1 else 0 end)
0
répondu Gregor y 2018-10-06 06:01:52