Оператор IS
Оператор IS определяет, является ли значение пустым (NULL) или нет.
Синтаксис SQL 2003
{WHERE | {AND | OR}} выражение IS [NOT] NULL
Ключевые слова
{WHERE | (AND | OR)} выражение IS NULL
Возвращает булево значение ИСТИНА, если выражение равно NULL, и значение ЛОЖЬ, если выражение не равно NULL. Перед проверяемым выражением может стоять ключевое слово WHERE или ключевые слова AND или OR.
NOT
Обращает утверждение. Инструкция будет возвращать булево значение ИСТИНА, если выражение не равно NULL, и значение ЛОЖЬ, если выражение равно NULL.
Поскольку значение NULL является неопределенным, нельзя с помощью сравнения определить, равно ли данное значение NULL или нет. Например, выражения X=NULL и X NULL неразрешимы, поскольку значение, которому должно быть равно или не равно X, неопределенно.
Вместо этого вы должны использовать оператор IS NULL. Не заключайте слово NULL в кавычки, поскольку в этом случае СУРБД интерпретирует значение как слово «NULL», а не как специальное значение NULL.
Советы и хитрости программирования
Некоторые платформы поддерживают использование операторов сравнения при проверке на NULL. Тем не менее все платформы, о которых мы рассказываем в этой книге, в настоящее время поддерживают ANSI синтаксис IS [NOT] NULL.
Иногда проверка на NULL сделает ваше предложение WHERE лишь немного более сложным. Например, вместо простого предиката для тестирования значения storid.
SELECT
stor_id,
ord_date
FROM sales
WHERE stor_id IN (6630, 7708);
Вы можете использовать следующий предикат, учитывающий возможность того, что stor_id может быть равен NULL.
SELECT
stor_id,
ord_date
FROM sales
WHERE stor_id IN (6630, 7708) OR stor_id IS NULL;