【问题标题】:If column contain particular string then result is NULL else another column, how to apply this Expression Transformation in informatica?如果列包含特定字符串,则结果为 NULL,否则为另一列,如何在 informatica 中应用此表达式转换?
【发布时间】:2021-04-10 11:14:37
【问题描述】:

我已经尝试了以下函数和代码,但我无法返回列值。

列名: CPOP_SCORE_NB,FILLER_COL_00010

DECODE( TRUE
      ,  FILLER_COL_00010=  '?', ' '
      , FILLER_COL_00010 = ' ', CPOP_SCORE_NB
                        , 'NA' )

IIF(FILLER_COL_00010 = '?', ' ' ,CPOP_SCORE_NB)

如果FILLER_COL_00010 列值没有?,现在我想返回CPOP_SCORE_NB 列值。

我是 informatica 的新手,谁能帮我解决这个问题?

【问题讨论】:

    标签: sql informatica informatica-powercenter


    【解决方案1】:

    如果 FILLER_COL_00010 列值没有“?”,我想返回 CPOP_SCORE_NB 列值。

    在 SQL 中,你会这样写:

    (case when FILLER_COL_00010 not like '%?%' then CPOP_SCORE_NB end)
    

    【讨论】:

    • 完全正确,但是如何在 informatica 中应用相同的内容并返回其他条件的列名
    • 很遗憾,informatica 没有“like”,因此您可以使用 INSTR
    • 我只想指出,这个问题被标记为 SQL,并且我所知道的每个数据库都支持 LIKE
    【解决方案2】:

    您可以在您的情况下使用 REG_MATCH 函数,

    IIF(REG_MATCH(FILLER_COL_00010,'.*?*.')=FALSE,CPOP_SCORE_NB)

    【讨论】:

      【解决方案3】:

      我对你的陈述有简单的解决方案 - i want to return the CPOP_SCORE_NB column value if FILLER_COL_00010 column value not having ?

      IIF(INSTR(FILLER_COL_00010,'?')=0, CPOP_SCORE_NB)
      

      INSTR 将在 FILLER_COL_00010 中返回? 的位置。

      【讨论】:

        【解决方案4】:

        谢谢大家,我尝试了所有选项。但以下对我有用:

        IIF(FILLER_COL_00010 = '?',NULL,CPOP_SCORE_NB)

        【讨论】:

          猜你喜欢
          • 2023-04-04
          • 1970-01-01
          • 1970-01-01
          • 2018-05-22
          • 2018-12-05
          • 1970-01-01
          • 1970-01-01
          • 2021-08-05
          • 2017-11-16
          相关资源
          最近更新 更多