你好,我是informatica的新手,并试图编写解码或如果,其中只有一个值进入输出端口…一个不相等的值将进入输出端口…我确信这个值是不相等的……所以我的解码不起作用,我试图做一个嵌套的if不起作用…解码如下…解码(真Testopen = testdoor1, '打开','关闭',Testopen = testdoor2, '打开','关闭',Testopen = testdoor3, 'open', 'close')
虽然我知道testdoor3是唯一一个等于testopen..Testdoor3已被填充…我对testdoor2进行了一次测试(解码中只有一个表达式,它仍然用teststopen2填充testopen), testdoor2和testdoor1有null
然后尝试使用iif,但在第一个
之后卡住了。iif (testopen = testdoor1, 'equal','noequal')
但是我不知道如何用3个if语句做到这一点。谢谢你的帮助。
decode (true
testopen = testdoor1, 'open', 'close',
testopen = testdoor2, 'open', 'close',
testopen = testdoor3, 'open', 'close')
或if (testopen = testdoor1, 'equal','noequal')感谢您的帮助!
下面是Informatica文档中DECODE的语法
DECODE( value, first_search, first_result [, second_search, second_result]...[,default] )
我建议你加上你的输入值和期望的输出是什么。
通过查看您的代码,似乎您没有为预期的位置/参数提供正确的输入。假设端口有以下值
testopen = '是的'
testdoor1 = '是的'
testdoor2 ="不">
testdoor3 = '是的'
让我们看看用端口的实际值替换解码后,并将其与语法进行比较。注意(second_search),其中您没有比较端口,而只是比较值"close"。这就是为什么你的代码表现得很奇怪。
注意:注意你原来的文章中"true"后面缺少逗号
decode(true,
'Yes' = 'No' (first_search), 'open' (first_result), 'close' (second_search),
'Yes' = 'Yes' (second_result), 'open' (third_search), 'close' (third_result),
'Yes' = 'No' (forth_search), 'open' (forth_result), 'close'(default))
尝试使用类似于下面的代码。这也是来自Informatica文档。
DECODE( TRUE,
Var1 = 22, 'Variable 1 was 22!',
Var2 = 49, 'Variable 2 was 49!',
Var1 < 23, 'Variable 1 was less than 23.',
Var2 > 30, 'Variable 2 was more than 30.',
'Variables were out of desired ranges.')
DECODE接受一个值、一对搜索值和结果值,还有一个可选的默认值。
你似乎在使用三元组而不是参数对。你实际写的是:
decode (true
testopen = testdoor1, 'open',
'close', testopen = testdoor2,
'open', 'close',
testopen = testdoor3,
'open', 'close')