В SQL Server значения могут отсутствовать, но могут применяться, например, значение цвета волос, которое не было предоставлено человеку, или может отсутствовать, но не может применяться, например, значение для жирного лица.В любом случае SQL Server помечает пропущенные значения как NULL.A NULL
не является ни TRUE
, ни FALSE
, но UNKNOWN
.Это третье значение в трехзначной логике.Другими словами, вы можете определить, является ли X = Y
ИСТИНА или ЛОЖЬ, если вы знаете значения как X
, так и Y
, но что, если X
отсутствует?SQL Server вернет UNKNOWN
, помеченный как NULL
.Это ваш случай: вы знаете, что Y
известен (равно «Маркетинговый координатор»), но X
может отсутствовать.Поскольку WHERE
возвращает только те строки, которые соответствуют условиям (т. Е. Каждый предикат оценивается как TRUE
), результаты UNKNOWN
будут отфильтрованы.
Вам нужно будет написать запросы, использующие трехзначныелогика для учета трех возможных результатов: TRUE
, FALSE
и UNKNOWN
.В предложениях ON
, WHERE
и HEAVING
SQL Server будет обрабатывать NULL
как FALSE
.С другой стороны, ORDER BY
сортирует NULLs
вместе и первым.
Вы можете проверить значения NULL
с помощью операторов IS NULL
или IS NOT NULL
вместо равных.