Informatica中的Case语句/Decode函数

12

有人能帮我在Informatica PowerCenter Designer中编写case语句吗?我对Informatica相当新,根据我的有限经验,我觉得不支持case语句。有一个具有类似功能的解码函数,但我无法找到任何关于语法的好示例。

如果有人能给我一些在Informatica中使用case语句/解码函数的具体示例,我将非常感激。

非常感谢您的帮助!

2个回答

20

你说得没错——确实没有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

它的工作原理如下:

  • 第一个参数是硬编码的 TRUE 值,
  • 偶数参数(第二个、第四个等)是条件
  • 奇数参数(第三个、第五个等)是返回值
  • 最后一个参数是默认返回值
  • 第一个被判断为 1st 参数值的条件(即第一个为 true 的条件)决定了返回的值,
  • 如果没有一个条件被满足,则返回最后一个参数。

3

另外,还要看一下经常用于实现条件逻辑的IIF()函数:

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

3
这个方法可以运行,但随着条件数量的增加,它也会很快变得混乱。使用“DECODE”函数可以编写更易读的表达式。 - Marek Grzenkowicz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接