Признак NULL обеспечивает возможность применения трехзначной логики в условиях поиска. Результатом применения любого условия поиска может быть TRUE, FALSE или NULL(в случае, когда в одном из столбцов содержится NULL). Иногда бывает необходимо явно проверять значения столбцов на NULL и непосредственно обрабатывать их. Для этого в языке SQL имеется специальная проверка IS NULL. Синтаксис использования этого условия поиска следующий:
<значение> IS [NOT] NULL .
Например, необходимо вывести номера лицевых счетов абонентов и даты подачи ими заявок, по которым не выполнены ремонтные работы, т.е. поле ExecutionDate содержит NULL. Для этого можно использовать следующий запрос:
SELECT AccountCD, IncomingDate FROM Request
WHERE ExecutionDate IS NULL;. Результат выполнения запроса представлен на рис. 3.15.
|
ACCOUNTCD |
INCOMINGDATE |
|
080270 |
31.12.2001 |
|
115705 |
28.12.2001 |
Рис. 3.15. Результат выполнения запроса с проверкой значения на NULL
В отличие от условий поиска, описанных выше, проверка на NULL не может возвратить NULL в качестве результата. Она всегда возвращает TRUE или FALSE. Следует отметить, что нельзя проверить значение на равенство NULL с помощью простой операции сравнения, например:
SELECT AccountCD, IncomingDate
FROM Request WHERE ExecutionDate = NULL;. Запрос не будет выдавать синтаксическую ошибку (как это было бы в более ранних версиях Firebird), так как теоретически литерал NULL может участвовать во всех выражениях (A = NULL, B > NULL, A + NULL, B || NULL и т.д.). Однако получится неправильный результат (NULL), так как если в операции сравнения одно из выражений имеет значение NULL, то и результат будет NULL.
предыдущаяследующая