T-SQL XOR opérateur
Existe-t-il un opérateur XOR ou une fonction équivalente dans SQL Server (T-SQL)?
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))
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
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.
MS SQL ne forme courte (depuis SQL Server 2012):
1=iif( a=b ,1,0)^iif( c=d ,1,0)
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.
C'est ^
http://msdn.microsoft.com/en-us/library/ms190277.aspx
Voir aussi peu de code ici, dans le milieu de la page comment basculer un peu dans SQL Server en utilisant L'opérateur Bitwise NOT
à 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)