NULL сравнение, взять 2 - PullRequest
       26

NULL сравнение, взять 2

0 голосов
/ 24 сентября 2010

У меня есть подзапрос, используемый в разделе WHERE:

A.column <> B.column

К сожалению, это не работает, если A.column или B.column NULL. Итак, я преобразовал его в:

((A.column <> B.column) OR ((A.column IS NULL) <> (B.column IS NULL)))

, предполагая, что "Table.column IS NULL" является логическим значением, и я могу сравнить 2 логических значения. Но ...

Неверный синтаксис рядом с '<'. </p>

Мне не нравится

((A.column <> B.column) OR ((A.column IS NULL) AND (B.column IS NOT NULL)) OR
((A.column IS NOT NULL) AND (B.column IS NULL)))

Как я мог бы решить эту проблему?

С уважением,

Ответы [ 4 ]

3 голосов
/ 24 сентября 2010

NULLIF возвращает ноль, когда два значения равны =)

WHERE NULLIF(A.column, B.column) IS NOT NULL
3 голосов
/ 24 сентября 2010

Используйте функцию ISNULL .

1 голос
/ 24 сентября 2010
(ISNULL(A.column,0)) <> (ISNULL(B.column,0))
0 голосов
/ 24 августа 2011

В MySQL вы можете использовать

WHERE NOT(A <=> B) 

Чтобы сделать WHERE A <> B, который также работает на нуле.

См .: http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#operator_equal-to

...