如何在 informatica 中编写 IIF() 函数

How can I write an IIF() function in informatica

如何在 Informatica 中为附加的示例数据编写 IFF 函数。我有一个目标 table,它由不同的列组成。我目前有不同的表达方式。 IIF(LTRIM(RTRIM(SUBSTR(HEADER_INFO,1,1)))='',NULL,LTRIM(RTRIM(SUBSTR(HEADER_INFO,1,1))))

IIF(LTRIM(RTRIM(SUBSTR(DETAIL_INFO,2,4)))='',NULL,LTRIM(RTRIM(SUBSTR(DETAIL_INFO,2,4))))

上面的第一个表达式从下面的第一行中取出 H 并将其分配给 A 列,还有另一个表达式函数将 P 分配给另一列 B,它继续直到到达第一行的最后一个字符并将其分配给列 P。 上面的第二个IFF函数读取1并将其分配给W列,然后不同位置的类似表达式将P分配给特定的X列,另一个将009046678402分配给Y列,然后另一个将40分配给Z。 我想要实现的是,在第二行读取并赋值后,如果下一行再次以 'D' 开头,它仍然应该读取它。但是我目前的 IFF 函数,只有在有行交替时才读取 生命值... D1... 如我所愿,如果有附件中所示的场景,您有 生命值... D1... D2... D3... 它仍应读取并分配 enter image description here D1...、D2...、D3...

的值

HP2519263013900HWA8365C DEFORD DONITA 1245327121 1184950479 2012516 0 201909202019092016 0 D1 P00904667840240

我通过为每个字段创建变量端口并将我的 TRIM 中的 null 替换为它们各自的变量端口来解决这个问题,如下 IIF(LTRIM(RTRIM( SUBSTR(HEADER_INFO,1,1)))='',v_ID,LTRIM(RTRIM(SUBSTR(HEADER_INFO,1,1) ))), IIF(LTRIM(RTRIM(SUBSTR(HEADER_INFO,2,4)))='',v_LST_Name,LTRIM(RTRIM(SUBSTR(HEADER_INFO,2,4))))