2014-11-03 7 views
1
col1 col2 
null null 
aaaa null 
bbbb null 

col1 = col2 - ни одной строки возвращаетсяSQL и нулевые значения

нет (col1 = col2) - следующие вернулись

aaaa null 
bbbb null 

Не (нуль) = нуль? так как это интерпретируется?

+0

Я думаю, ответ на этот вопрос находится в: http://stackoverflow.com/a/1843460/4211782 – Iwo

+0

Вот хороший учебник о 'null' значения: на http://www.guru99.com/null.html –

+0

Я только что запустил ваш второй запрос в скрипте SQL, и он не возвращает строк: http://www.sqlfiddle.com/#!6/d41d8/22672. Мое лучшее предположение заключается в том, что 'null' не' null ', а '' null'' - строка, то есть. –

ответ

1

По сравнению с null Результаты неизвестен который false.

Используйте is оператор

where col1 = col2 
or (col1 is null and col2 is null) 

Я добавил () только для readabiliy. and имеет более высокую точность оператора, чем or.

+0

нет, null = null - null. null = a также равно null. оба тогда являются ложными. Я знаю, что оператор is, любопытно, почему null = null не возвращается. – Paul

+2

Поскольку NULL не является известным значением. Поэтому, если у вас есть два неизвестных, вы не можете знать, равны они или нет, поэтому они не могут быть равными. –

+0

нет (false) я получаю – Paul

0

Используйте isnull (col1,0) = isnull (col2,0) , потому что нельзя сравнивать null с логическими операциями.

смотри ниже ссылке: SQL is null and = null

Смежные вопросы