как использовать XOR в SQL [дубликат]

Это означает, что ваш код использовал ссылочную переменную объекта, которая была установлена ​​в нуль (т. е. она не ссылалась на экземпляр фактического объекта).

Чтобы предотвратить ошибку, объекты, которые могут быть пустыми, должны быть протестированы для null перед тем, как использовать.

if (myvar != null)
{
    // Go ahead and use myvar
    myvar.property = ...
}
else
{
    // Whoops! myvar is null and cannot be used without first
    // assigning it to an instance reference
    // Attempting to use myvar here will result in NullReferenceException
}
45
задан Alex KeySmith 17 August 2011 в 09:32
поделиться

6 ответов

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

SELECT 170 ^ 75

Результат 225.

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

WHERE 5 > ANY (SELECT foo) AND NOT (5 > ALL (SELECT foo))
48
ответ дан Nathan Rivera 26 August 2018 в 08:03
поделиться

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

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
ответ дан Alberto De Caro 26 August 2018 в 08:03
поделиться

Оператором xor является ^

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

3
ответ дан Sebi 26 August 2018 в 08:03
поделиться

Как пояснили в вашем комментарии, 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 'недоступен.

14
ответ дан Shawn Kovac 26 August 2018 в 08:03
поделиться
1
ответ дан SQLMenace 26 August 2018 в 08:03
поделиться

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

1=iif( a=b ,1,0)^iif( c=d ,1,0)
10
ответ дан VV5198722 26 August 2018 в 08:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: