sql server - conditions - Operador T-SQL XOR
sql conditions (6)
Al usar álgebra booleana, es fácil mostrar 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
¿Hay un operador XOR o una función equivalente en SQL Server (T-SQL)?
Como se aclaró en su comentario, Spacemoses, usted indicó un ejemplo: WHERE (Note is null) ^ (ID is null). No veo por qué eligió aceptar cualquier respuesta dada aquí como respuesta a eso. Si necesitaba un xor para eso, creo que tendría que usar la lógica Y / O equivalente:
WHERE (Note is null and ID is not null) OR (Note is not null and ID is null)
Eso es equivalente a:
WHERE (Note is null) XOR (ID is null)
cuando ''XOR'' no está disponible.
El operador xor es ^
Por ejemplo: SELECT A ^ B
donde A y B son tipos de datos de categoría entera.
Es ^
http://msdn.microsoft.com/en-us/library/ms190277.aspx
Vea también algunos códigos aquí en el medio de la página Cómo voltear un poco en SQL Server usando el operador Bitwise NOT
Forma abreviada de MS SQL (desde SQL Server 2012):
1=iif( a=b ,1,0)^iif( c=d ,1,0)
Hay un operador XOR bit a bit: el símbolo de intercalación (^), es decir, para:
SELECT 170 ^ 75
El resultado es 225.
Para XOR lógico, use la palabra clave ANY y NO TODO, es decir,
WHERE 5 > ANY (SELECT foo) AND NOT (5 > ALL (SELECT foo))