conditions sql-server tsql xor

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.



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))