Функция COALESCE
Статьи про Oracle -> Программирование
Функция COALESCE
v:1.0 07.08.2011
Петрелевич Сергей
Источник информации: Oracle® Database SQL Language Reference
Синтаксис
Описание
Функция COALESCE
возвращает первое не-NULL выражение(expr
) в списке выражений (expr list
).
Необходимо задать как минимум два выражения. Если значения всех выражений NULL, то и функция вернет NULL.
База данных Oracle использует short-circuit evaluation (короткий путь вычисления выражения), т.е. выражения будут вычисляться до тех пор, пока одно из них не окажется не NULL.
Если тип данных всех выражений (expr
) - число или результаты всех выражений неявно можно причести к числовому типу, то такое приведение будет выполнено с
максимально возможной точностью.
Дополнительная информация:
Table 2-10, "Implicit Type Conversion Matrix" информация о неявном приведении типов и
"Numeric Precedence" информация о точности числового типа.
Функция NVL
- это частный случай COALESCE.
В ряде случаев Вы можете использовать COALESCE
вместо CASE
-выражения. Например,
COALESCE (expr1, expr2)
Это эквивалентно:
CASE WHEN expr1 IS NOT NULL THEN expr1 ELSE expr2 END
Другой случай,
COALESCE (expr1, expr2, ..., exprn), для n>=3
эквивалентно:
CASE WHEN expr1 IS NOT NULL THEN expr1
ELSE COALESCE (expr2, ..., exprn) END
Дополнительная информация:
NVL и
"CASE Expressions"
Примеры
В этом примере используется таблица предопределенной тестовой схемы oe.product_information
, информация о товарах и ценах.
Запрос возвращает цену товара со скидкой 10%, если цена не определена, то берется минимальная цена (min_price), если и это поле не определено,
то подставляется константа "5":
SELECT product_id, list_price, min_price, COALESCE(0.9*list_price, min_price, 5) "Sale" FROM product_information WHERE supplier_id = 102050 ORDER BY product_id, list_price, min_price, "Sale"; PRODUCT_ID LIST_PRICE MIN_PRICE Sale ---------- ---------- ---------- ---------- 1769 48 43.2 1770 73 73 2378 305 247 274.5 2382 850 731 765 3355 5
Метки: SQL
Внимание.
Комментировать могут только зарегистрированные пользователи.
Возможно использование следующих HTML тегов: <a>, <b>, <i>, <br>.