в чем разница между x = NULL и x IS NULL
В Snowflake, как и в других СУБД, ничто не равно NULL
(даже NULL
), таким образом, условие x = NULL
(допустимый синтаксис SQL) всегда будет оцениваться как ложное (ну, на самом деле, оно оценивается как NULL
в большинстве СУБД, что не соответствует действительности). Обратите внимание, что это также верно для сравнений на неравенство: то есть NULL <> NULL
также ложно.
Типичный способ проверить, является ли переменная NULL
, состоит в использовании конструкции x IS NULL
, которая оценивает как истина, если x
равно NULL
. Вы можете использовать x IS NOT NULL
тоже. Этот синтаксис зарезервирован для NULL
, поэтому что-то вроде x IS y
является синтаксической ошибкой.
Здесь небольшая демонстрация :
select
case when 1 = null then 1 else 0 end 1_equal_null,
case when 1 <> null then 1 else 0 end 1_not_equal_null,
case when null is null then 1 else 0 end null_is_null,
case when 1 is not null then 1 else 0 end 1_is_not_null
1_equal_null | 1_not_equal_null | null_is_null | 1_is_not_null
-----------: | ---------------: | -----------: | ------------:
0 | 0 | 1 | 1