FirebirdSQL logo
Поисковый CASE
Синтаксис
CASE
  WHEN <bool_expr> THEN <result>
  [WHEN <bool_expr> THEN <result> …]
  [ELSE <defaultresult>]
END

Здесь <bool_expr> выражение, которое даёт тройной логический результат: TRUE, FALSE или NULL.Первое выражение, возвращающее TRUE, определяет результат.Если нет выражений, возвращающих TRUE, то в качестве результата берётся defaultresult из ветви ELSE.Если нет выражений, возвращающих TRUE, и ветвь ELSE отсутствует, результатом будет NULL.

Как и в простом операторе CASE, результаты не обязаны быть литеральными значениями: они могут быть полями или именами переменных, сложными выражениями, или NULL.

Example 1. Использование поискового CASE
CANVOTE = CASE
  WHEN AGE >= 18 THEN 'Yes'
  WHEN AGE < 18 THEN 'No'
  ELSE 'Unsure'
END;

NULL в выражениях

NULL не является значением — это состояние, указывающее, что значение элемента неизвестно или не существует.Это не ноль, не пустота, не “пустая строка”, и оно не ведёт себя как какое-то из этих значений.

При использовании NULL в числовых, строковых выражениях или в выражениях, содержащих дату/время, в результате вы всегда получите NULL.При использовании NULL в логических (булевых) выражениях результат будет зависеть от типа операции и других вовлечённых значений.При сравнении значения с NULL результат будет неопределённым (UNKNOWN).

Important

Неопределённый логический результат UNKNOWN тоже представлен псевдо-значением NULL.