col1 col2
null null
aaaa null
bbbb null
col1 = col2 - ни одной строки возвращаетсяSQL и нулевые значения
нет (col1 = col2) - следующие вернулись
aaaa null
bbbb null
Не (нуль) = нуль? так как это интерпретируется?
col1 col2
null null
aaaa null
bbbb null
col1 = col2 - ни одной строки возвращаетсяSQL и нулевые значения
нет (col1 = col2) - следующие вернулись
aaaa null
bbbb null
Не (нуль) = нуль? так как это интерпретируется?
По сравнению с null
Результаты неизвестен который false
.
Используйте is
оператор
where col1 = col2
or (col1 is null and col2 is null)
Я добавил ()
только для readabiliy. and
имеет более высокую точность оператора, чем or
.
нет, null = null - null. null = a также равно null. оба тогда являются ложными. Я знаю, что оператор is, любопытно, почему null = null не возвращается. – Paul
Поскольку NULL не является известным значением. Поэтому, если у вас есть два неизвестных, вы не можете знать, равны они или нет, поэтому они не могут быть равными. –
нет (false) я получаю – Paul
Используйте isnull (col1,0) = isnull (col2,0) , потому что нельзя сравнивать null с логическими операциями.
смотри ниже ссылке: SQL is null and = null
Я думаю, ответ на этот вопрос находится в: http://stackoverflow.com/a/1843460/4211782 – Iwo
Вот хороший учебник о 'null' значения: на http://www.guru99.com/null.html –
Я только что запустил ваш второй запрос в скрипте SQL, и он не возвращает строк: http://www.sqlfiddle.com/#!6/d41d8/22672. Мое лучшее предположение заключается в том, что 'null' не' null ', а '' null'' - строка, то есть. –