FirebirdSQL logo

NULL в логических выражениях

Мы уже рассмотрели, что not (NULL) даёт в результате NULL.Для операторов AND и OR взаимодействие несколько сложнее:

NULL or false → NULL
NULL or true → true
NULL or NULL → NULL
NULL and false → false
NULL and true → NULL
NULL and NULL → NULL
Example 1. NULL в логических выражениях
(1 = NULL) or (1 <> 1)    -- returns NULL
(1 = NULL) or FALSE       -- returns NULL
(1 = NULL) or (1 = 1)     -- returns TRUE
(1 = NULL) or TRUE        -- returns TRUE
(1 = NULL) or (1 = NULL)  -- returns NULL
(1 = NULL) or UNKNOWN     -- returns NULL
(1 = NULL) and (1 <> 1)   -- returns FALSE
(1 = NULL) and FALSE      -- returns FALSE
(1 = NULL) and (1 = 1)    -- returns NULL
(1 = NULL) and TRUE       -- returns NULL
(1 = NULL) and (1 = NULL) -- returns NULL
(1 = NULL) and UNKNOWN    -- returns NULL

Подзапросы

Подзапрос — это специальный вид выражения, которое фактически является запросом, встроенным в другой запрос.Подзапросы пишутся как обычные SELECT запросы, но должны быть заключены в круглые скобки.Выражения подзапроса используется следующими способами:

  • Для задания выходного столбца в списке выбора SELECT;

  • Для получения значений или условий для предикатов поиска (предложения WHERE, HAVING);

  • Для создания набора данных, из которого включающий запрос может выбирать, как будто это обычная таблица или представление.Подобные подзапросы появляются в предложении FROM (производные таблицы) или в общем табличном выражении (CTE).