FirebirdSQL logo

Примеры COALESCE

Example 1. Использование функции COALESCE

В данном примере предпринимается попытка использовать все имеющиеся данные для составления полного имени.Выбирается поле NICKNAME из таблицы PERSONS.Если оно имеет значение NULL, то берётся значение из поля FIRSTNAME.Если и оно имеет значение NULL, то используется строка “'Mr./Mrs.'”.Затем к значению функции COALESCE добавляется фамилия (поле LASTNAME). Обратите внимание, что эта схема нормально работает, только если выбираемые поля имеют значение NULL или не пустое значение: если одно из них является пустой строкой, то именно оно и возвратится в качестве значения функции COALESCE.

SELECT
  COALESCE(PE.NICKNAME, PE.FIRSTNAME, 'Mr./Mrs.') ||
  ' ' || PE.LASTNAME AS FULLNAME
FROM PERSONS PE
Example 2. Использование функции COALESCE с агрегатными функциями

В данном примере в случае получения при суммировании значения NULL запрос вернёт 0.

SELECT coalesce (sum (q), 0)
FROM bills
WHERE ...
См. также:

CASE.

DECODE()

Доступно в

DSQL, PSQL

Синтаксис
DECODE(<testexpr>,
  <expr1>, <result1>
  [<expr2>, <result2> …]
  [, <defaultresult>])

эквивалентная конструкция CASE

CASE <testexpr>
  WHEN <expr1> THEN <result1>
  [WHEN <expr2> THEN <result2> …]
  [ELSE <defaultresult>]
END
Table 1. Параметры функции DECODE
Параметр Описание

testexpr

Выражения любого совместимого типа, которое сравнивается с выражениями <expr1>, <expr2> …​ <exprN>

expr1, expr2, …​ exprN

Выражения любого совместимого типа, с которыми сравнивают с выражением <testexpr>.

result1, result2, …​ resultN

Возвращаемые выражения любого типа.

defaultresult

Выражение, возвращаемое если ни одно из условий не было выполнено.

Тип возвращаемого результата

зависит от типов входных аргументов

Данная функция эквивалентна конструкции Простой CASE, в которой заданное выражение сравнивается с другими выражениями до нахождения совпадения.Результатом является значение, указанное после выражения, с которым найдено совпадение.Если совпадений не найдено, то возвращается значение по умолчанию (если оно, конечно, задано — в противном случае возвращается NULL).

Caution

Совпадение эквивалентно оператору ‘=’, т.е.если testexpr имеет значение NULL, то он не соответствует ни одному из expr, даже тем, которые имеют значение NULL.