(A) Операторы сравнения SQL приводят к трем возможным значениям: True, False и Unknown. Если один или оба операнда равны NULL
, тогда результат будет неизвестным. Рассмотрим следующий пример, где мы сравниваем некоторые значения (возраст человека) с постоянной (18):
21 >= 18 -- True
15 >= 18 -- False
NULL >= 18 -- Unknown
Как вы можете видеть, база данных может/не решить, если NULL
больше/равна 18.
(B) База данных будет возвращать только строки, где пункт WHERE
оценивает значение True. Инвертирование выражения (например, WHERE age >= 18
, измененное на WHERE age < 18
) не влияет на результаты Неизвестного.
Вы можете использовать IS [NOT] NULL
для соответствия NULL
значениям. Следующий запрос будет выбирать строки, в которых столбец не соответствуют шаблону ИЛИ столбец NULL:
WHERE [TextCol] NOT LIKE '%TAX%' OR [TextCol] IS NULL
такие функции, как и ISNULL
COALESCE
могут быть использованы для трансформации NULL
в какую-то ценность.
У вас есть значения «null» для этого столбца? – musefan
Да, в этом столбце есть нулевые значения. – Shanka
Попробуйте избегать использования '%' в начале строки поиска, когда это возможно. Это довольно тяжело. –