Подтвердить что ты не робот

Оператор T-SQL XOR

Есть ли в SQL Server (T-SQL) оператор XOR или эквивалентная функция?

4b9b3361

Ответ 1

Существует побитовый оператор XOR - каретка (^), т.е. для:

SELECT 170 ^ 75

Результат - 225.

Для логического XOR используйте ключевое слово ANY и НЕ ВСЕ, т.е.

WHERE 5 > ANY (SELECT foo) AND NOT (5 > ALL (SELECT foo))

Ответ 2

Используя булеву алгебру, нетрудно показать, что:

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

Ответ 3

Как поясняется в вашем комментарии, Spacemoses, вы указали пример: WHERE (примечание равно null) ^ (ID - null). Я не понимаю, почему вы решили принять любой ответ, приведенный здесь, как ответ на этот вопрос. Если мне нужен xor для этого, я думаю, что мне придется использовать эквивалентную логику AND/OR:

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

Это эквивалентно:

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

когда "XOR" недоступен.

Ответ 4

MS SQL только короткая форма (начиная с SQL Server 2012):

1=iif( a=b ,1,0)^iif( c=d ,1,0)

Ответ 5

Оператор xor ^

Например: SELECT A ^ B, где A и B являются целыми категориями типов данных.