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

Функция Oracle DECODE

Функция Oracle DECODEФункция Oracle DECODE позволяет модифицировать вывод инструкции SELECT в зависимости от заданных условий (логика IF-THEN-ELSE). Она сравнивает выражение (обычно это значение столбца) с каждым искомым значением. Если обнаруживается соответствие, функция возвращает результат, в противном случае — значение по умолчанию. Если соответствий не обнаружено, а умолчания не заданы, функция возвращает неопределенное значение NULL. В дополнение к функции DECODE, Oracle 11g также предлагает инструкцию CASE, функционально идентичную уже рассмотренным для других баз данных. Инструкция CASE возвращает те же результаты, используя более понятный синтаксис, при этом вызов функции не выполняется.

К примеру, таким образом можно подготовить список заказчиков вместе с их кредитным статусом. В учебной базе данных ACME столбец CUST_CREDITHOLD_S определяет, может ли конкретный клиент получить кредит. Если это так, в столбце содержится значение Y, в противном случае — N. Простейшая инструкция SELECT, объединяющая значения двух данных столбцов, выглядит следующим образом.

SELECT Несмотря на то что с технической точки зрения такой отчет будет корректным, для пользователя была бы полезной интерпретация символов Y и N. В Oracle данная задача разрешается следующим образом.

SELECT Данный запрос достаточно прост: если в столбце CUST_CREDITHOLD_S содержится значение Y, возвращается строка ‘good credit’; если N — подставляется строка ‘on hold’; если ни то ни другое, возвращается слово ‘undefined’. Максимальное число компонентов (включая выражения, критерий поиска, подстановки и умолчания) данной функции не должно превышать 255. В следующем примере получены идентичные результаты в Microsoft SQL Server 2008, IBM DB2 9.5 и Oracle Данный запрос более понятный; к тому же он переносим между разными СУБД.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *