我在Informatica的一種表達轉換以下解碼聲明:Informatica的解碼返回不允許值
(DECODE
(TRUE
, OPERATION1='I' and NOT ISNULL(a_new),'YES'
, OPERATION1='D'and NOT ISNULL(a_old),'YES'
, OPERATION1='U'and ((
(a<>b)
or (ISNULL(a_new) and NOT ISNULL(a_old))
or (NOT ISNULL(a_new) and ISNULL(a_old))
)
),'YES','NO CHANGE')
)
a_new進行地方和a_old均爲整數(當他們出現在所有)。
這裏的怪異的一部分:
這解碼聲明,在運行時,不斷返回0(零)的值。我不能爲了我的生活找出原因。當我在調試器中運行它並評估解碼時(右鍵單擊表達式,單擊'評估表達式',將解碼粘貼),它的計算結果爲YES或NO CHANGE正確。但是當它在調試器和生產中實際運行時,它仍然計算爲零。有人知道爲什麼嗎?
+1使用[我最喜歡的DECODE(TRUE,...)絕招](http://stackoverflow.com/a/9979906/95)! –