Комментарии 5
И стоит упомянуть, что некоторые особо одаренные RDBMS'ы (привет, Oracle!) трактуют пустую строку как NULL, что жутко раздражает.
Ничего не написано, что благодаря LEFT/RIGHT/FULL OUTER JOIN можно получить поля со значением NULL, даже если выбираются столбцы с NOT NULL ограничением.
Значение NULL может трактоваться не только как отсутствие информации (мы не знаем), но и как отсутствие смысла в информации (например в зависимости от других связанных данных).
Например, выражение NULL = NULL должно вернуть false, но на практике может вернуть NULL
Оно и должно вернуть NULL, что хорошо согласуется с отрицанием этого выражения - оно также вернет NULL.
Функция ISNULL сколько мне известно не стандарт SQL, более верным будет использовать COALESCE.
Сравнение значений. Если в таблице присутствуют значения NULL, то при выполнении операции сравнения, например, WHERE column_name = NULL, результатом будет False. Вместо этого нужно использовать оператор IS NULL.
Это ("результатом будет False") неправда. результатом будет Unknown, который и не True, и не False. Если бы результатом был False, то условие вида where not (colum_name = null) возвращало бы всё, где column_name не-null, а это так не работает.
Очередной "ман по нуллу". К сожалению, достаточно низкокачественный. Практически халтура.
Ладно, нет перечня операций, которые, имея в операндах NULL, тем не менее дают non-NULL результат (типа NULL OR TRUE), без него и пережить можно. Но вот отсутствие описания реально проблемных случаев от непонимания обработки NULL, и в первую очередь WHERE IN - это форменное безобразие.
NULL в SQL: Что это такое и почему его знание необходимо каждому разработчику