Сравнение с NULL в SQL

В SQL нельзя в условии запроса (ON, WHERE) сравнивать с NULL. То есть

Все эти запросы не приведут к ожидающимся результатам, а именно, те строки, которые все будут равны NULL (в последнем случае) или не будут ему равны (в первых двух) не попадут в результат.

Более того, в запросе

в выдачу не попадут строки, в которых и SomeColumn, и OtherColumn равны NULL.

Для сравнения с NULL можно использовать только операторы IS NULL и IS NOT NULL.

Например, для последнего примера можно добавить дополнительное условие:

В подобных сравнениях:

NULL выступает не как NULL, а как UNKNOWN, и все указанные выражения вернут только TRUE или FALSE, поэтому их можно использовать для сравнения с NULL, если результат вас устроит.

Например, такое выражение вернет TRUE:

PostgreSQL

В PostgreSQL есть операторы is (not) distinct from , которые следуют стандарту SQL:2003. Эти операторы позволяют сравнивать с null без лишних заморочек. Так, псевдопримеры (нерабочие) из начала статьи легко переделываются в работающие, как задумано, следующим образом:

 

Поделиться: Share on LinkedIn
Linkedin
Share on VK
VK
Share on Facebook
Facebook
0Share on Google+
Google+
0Tweet about this on Twitter
Twitter

Оставить комментарий

Ваш e-mail не будет опубликован.

Яндекс.Метрика