Замена значения (DECODE)

Функция

Замена значения в соответствии с правилом декодирования.

Спецификация
 
<​вариант...​>::=
<​значение по умолчанию​>::=
литерал
|{SYSDATE | NOW}
|{LOCALTIME | LOCALTIMESTAMP}
|CURRENT_DATE
|{CURRENT_TIME | CURRENT_TIMESTAMP}
| NULL
| USER
Общие правила
  1. Функция создана для совместимости с СУБД ORACLE. Эквивалентна конструкции СУБД ЛИНТЕР:

    CASE <​значимое выражение​> WHEN <​вариант1​> THEN <​значение1​>
    [...WHEN <​вариантN​> THEN <​значениеN​>]
    [ELSE <​значение по умолчанию​>] END
  2. Если <​значение по умолчанию​> не задано, используется NULL-значение.

  3. Аргументы могут быть заданы <​SQL-параметром​>, который должен содержать спецификацию типа данных параметра.

    select distinct decode(make, ? (char(20)), ? (char(20)), ? (char(20)), ? (char(20)), 'Прочие') from auto limit 5;
    FORD
    Форд
    MASERATI
    Мазерати
    |Мазерати            |
    |Прочие              |
    |Форд                |
Примеры
create table tab1(code int);
…
select * from tab1;
| 1    |
| NULL |
| 2    |
| 4    |
| 3    |
select decode( code, 1, 'Директор', 2, 'Маркетинг', 3, 'Бухгалтерия', 4, 'Программисты', null, 'Неизвестно')
  from tab1;
| Директор     |
| Неизвестно   |
| Маркетинг    |
| Программисты |
| Бухгалтерия  |