Галерея
7757 8119 8300 8698 8817 9504 9722 9937
Интересные записи
Новое на сайте
Топовые новости
Новое

Функция COALESCE

Функция COALESCEФункция COALESCE возвращает первый определенный (не равный NULL) аргумент в списке. К примеру, если клиентам предлагается несколько форм оплаты (кредитный счет, предоплата и банковский чек), вы можете выслать заказчику счет и забыть, какой метод расчета был применен. В данном случае поможет следующий запрос. Таблицы ACCOUNT_MANAGEMENT не существует в базе данных ACME, однако приведенный пример поможет понять, как использовать функцию COALESCE. Синтаксис этой функции также идентичен во всех трех ведущих СУБД. Данные функции используют для выявления неопределенных значений в выборках и их замены заданными величинами. Функция Oracle NVL является прямым эквивалентом функции Microsoft SQL Server ISNULL. Однако для получения тех же результатов можно использовать и функцию COALESCE.

Следующий запрос вернет список заказчиков и соответствующих им псевдонимов. Для тех клиентов, для которых еще не введен псевдоним (т. е. значение поля равно NULL), в результирующем столбце будет выведено слово ‘undefined’. В синтаксисе SQL Server данный запрос выглядит следующим образом.

Результаты запросов идентичны в DB2 9.5, Microsoft SQL Server и Oracle 11g. Однако в Oracle 11g существует и более мощная функция — NVL2; она позволяет выполнять несколько подстановок в зависимости от того, определено ли значение. Если, к примеру, нужно проверить, каким заказчикам присвоены псевдонимы, а каким нет, с задачей справится следующий запрос. В приведенном запросе если в столбце псевдонима заказчика содержится NULL, в результирующий набор данных будет включена строка ‘not assigned’. В противном случае возвращается строка’alias assigned’. Второй и третий аргументы могут быть любого типа данных, за исключением LONG. Первый аргумент может быть вообще любого типа. Все три ведущие СУБД имеют массу функций, которые в настоящей главе не рассматриваются. Это, в частности, относится к функциям курсора Oracle 11 g, к объектным и аналитическим функциям; а также к табличным функциям и выражениям