Стандартная альтернатива SQL для Oracle DECODE - PullRequest
7 голосов
/ 09 июля 2010

Существует ли ANSI SQL, эквивалентный функции Oracle DECODE?

Функция декодирования Oracle - это конструкция IF-THEN-ELSE в SQL.

Ответы [ 4 ]

16 голосов
/ 09 июля 2010

Выражение CASE - это метод ANSI SQL, из которых существует 2 разновидности: «простой» и «поисковый»:

1) Простое выражение CASE:

CASE col WHEN 1 THEN 'One'
         WHEN 2 THEN 'Two'
         ELSE 'More'
         END

2) Искомое выражение CASE:

CASE WHEN col < 0 THEN 'Negative'
     WHEN col = 0 THEN 'Zero'
     ELSE 'Positive'
     END
2 голосов
/ 09 октября 2018

Обратите внимание, что Oracle DECODE обрабатывает значение null как равное нулю, а CASE (и любые другие сравнения) - нет.

Пример: Decode (a, b, 1,0) вернет 1, если a и b равны нулю.

Просто запустите эти 2 оператора, чтобы увидеть разницу.

select case null when null then 'Y' else 'N' end dd from dual;
select decode(null, null, 'Y', 'N') dd from dual;
2 голосов
/ 09 июля 2010
CASE WHEN a=1 THEN value1
     WHEN a=2 THEN value2
     ELSE default
END

Синтаксис оператора SQL?

0 голосов
/ 09 октября 2018

добавление его в ноль можно сравнить в декодировании, тогда как в случае, если это не так.

...