в чем разница в селекте с not null и без?

ссылка на задачку: https://www.sql-ex.ru/learn_exercises.php#answer_ref
решение:

select name from battles
where datepart(year,date) not in 
(select launched from ships
join classes on classes.class = ships.class
where launched is not null
union
select launched from ships
join outcomes on ships.name = outcomes.ship
where launched is not null)

вопрос: почему без (is not null) не проходит проверку?
что происходит когда мы сравниваем например: дата not in (и тут null)?


Ответы (1 шт):

Автор решения: душитель питона

Нашел ссылку на статью про null в where not in на английском
https://www.polderknowledge.nl/2018/03/02/sql-beware-null-where-not/ Если вкратце то нельзя сравнивать с null т.к сравнение с null всегда возвращает null. Поэтому в where not in нужно сравнивать только с not null.

→ Ссылка