Операторы Case / функция декодирования в Informatica

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

Я был бы очень признателен, если бы кто-нибудь мог дать мне некоторые конкретные примеры использования операторов case/функции декодирования в Informatica.

спасибо много для вашей помощи!

2 ответов


вы правы - нет 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-й и так далее) являются условия,
  • нечетные параметры (3rd, 5th и так далее) являются вернуться значения,
  • последний параметр-это возвращаемое значение по умолчанию,
  • первое условие, которое вычисляет значение 1-го параметра (т. е. Первое условие, которое является истинным), определяет возвращаемое значение,
  • если ни одно из условий не выполняется, возвращается последний параметр.

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

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