В SQL любой оператор, один из аргументов которого равен NULL
, оценивается как NULL
. Итак, 1 + NULL
- это NULL
, MAX(NULL)
- это NULL
и так далее. Что наиболее важно, в вашем случае, X = NULL
всегда оценивается как NULL
, даже если X само по себе NULL
(то есть NULL = NULL
оценивается как NULL
, а не true
).
Точная ошибка, которую вы получаете, заключается в том, что ключевое слово NULL
на самом деле недопустимо в левой части сравнения. Но даже если вы исправите это, вы все равно обнаружите, что ни одна из ваших строк никогда не совпадает. Как уже говорили другие, правильное сравнение для использования при попытке определить, является ли что-то нулевым, равно IS NULL
, как в X IS NULL
.