Операторы регистра / функция декодирования в Informatica - PullRequest
10 голосов
/ 02 апреля 2012

Может ли кто-нибудь помочь мне с написанием описаний дел в Informatica PowerCenter Designer? Я довольно новичок в Informatica, и, основываясь на своем ограниченном опыте, я чувствую, что заявления о случаях не поддерживаются. Есть функция декодирования с похожей функциональностью, но я не могу найти хороших примеров по синтаксису.

Буду очень признателен, если кто-нибудь даст мне несколько конкретных примеров того, как использовать операторы case / decode в Informatica.

Большое спасибо за вашу помощь!

Ответы [ 2 ]

18 голосов
/ 02 апреля 2012

Вы правы - нет оператора CASE, но вы можете использовать DECODE для его симуляции:

DECODE( TRUE
      , DECIMAL_PORT > 0, 'positive value'
      , DECIMAL_PORT < 0, 'negative value'
                        , 'zero' )

Это эквивалент следующего оператора Transact-SQL CASE:

CASE
  WHEN DECIMAL_PORT > 0 THEN 'positive value'
  WHEN DECIMAL_PORT < 0 THEN 'negative value'
  ELSE 'zero'
END

Вот как это работает:

  • 1-й параметр - это жестко TRUE значение,
  • четные параметры (2-й, 4-й и т. Д.) Являются условиями ,
  • нечетные параметры (3-й, 5-й и т. Д.) Являются возвращаемыми значениями ,
  • последний параметр - возвращаемое значение по умолчанию ,
  • первое условие, которое оценивается как значение первого параметра (т. Е. Первое условие, которое является истинным), определяет возвращаемое значение,
  • если не выполняется ни одно из условий, возвращается последний параметр.
3 голосов
/ 02 апреля 2012

Посмотрите также на функцию IIF (), которая часто используется для реализации условной логики:

IIF(DECIMAL_PORT > 0, 'positive value', IIF(DECIMAL_PORT < 0 ,'negative value', 'zero'))
...