Функція decode () в sql СУБД oracle, блог розробника it, розробка на oracle

Да уж, давно не писав в блог, почну зараз виправлятися! Спочатку відпустка була тривалий, а потім ще й захворів, все це відсувало публікацію нових статей.

У цій статті я хочу написати про функцію sql, яка доступна тільки в СУБД Oracle. Функція називається «DECODE», що представляє собою спрощений варіант вираження «CASE WHEN»:

DECODE (<Контрольное значение>, <Значение1>, <Значение2>, <Значение3>, <Значение4>...<Дефолтное значение>)

Тут, «Контрольне значення» - це значення, яке перевіряється.

Тобто це еквівалентно цього:

case <контрольное значение> when <значение1> then <значение2> when <значение3> then <значение4>. else <последнее значение> end

Завдання програміста - правильно співвіднести пари значень після початкової змінної, тобто «<Контрольного значения>».

Наведу дуже примітивний приклад:

select decode ( 'Вова1'. '8', 'Вова'. 'Вова', 'Вова4'. 'Діма') from dual

Що поверне цей запит. А він поверне відповідь «Діма». а без значення «Діма», поверне NULL. Оскільки тут значення «Діма» - це дефолтний і є значення, тобто яке повертається за замовчуванням.

Хотів зробити одне зауваження - ця функція досить складна для розуміння і її використання може призвести до помилок в запитах, тому краще використовувати інші схожі функції - Nvl і Coalesce. Найчастіше саме за допомогою них можна вирішити потрібні завдання в обробці null-значень без допомоги функції Decode.

Update - Дякую всім, хто знайшов помилку в тексті даної статті, неуважно деякі речі написав, пізно було, спав мабуть 🙂

Плагін WordPress: Health Check - чи готові ви оновитися до WordPress 3.2

WordPress 3.1 - Прибираємо Admin Bar

Він повертає 3 рядки (так як в 3 місцях стоять хрестики). Але необхідно повертати один рядок з хрестиками у відповідному місяці ... Це реально?

Відколи DECODE стала функцією. На мій погляд це все ж вираз!

В оф. доці це якраз функція і є - «In a DECODE function, Oracle considers two nulls to be equivalent». =)

було б добре, якщо в описі прісутсвтовалі типи, з якими можна порівнювати і повертати

Типи можуть бути такі (більшість поширених) - NUMBER, BINARY_FLOAT, or BINARY_DOUBLE, CHAR, VARCHAR2, NCHAR, or NVARCHAR2 =)

Схожі статті