Привет.
Это заметка об использовании NULL в WHERE-выражениях в PostgreSQL.
NULL обычно означает, что значение неизвестно. Это не ноль, и не false. И даже не пустое значение.
Допустим, в миске у котика 0 граммов корма, то есть она пустая. Да, тогда котику не позавидуешь.
Но если вы идёте в гости к другу, и у него есть котик, то вы наверняка не знаете, сколько корма в миске его котика. То есть в миске котика друга NULL корма.
Так вот, если вы выполните запрос SELECT amount FROM miska WHERE amount = NULL, то будете всегда получать отрицательный результат. Почему так происходит? Да потому что происходит сравнение значения с NULL, но чисто логически NULL не является значением.
Поэтому правильным запросом для получения пустых мисок будет SELECT amount FROM miska WHERE amount IS NULL.