1

을 반환 I 인포매티카의 표현식 변환에서 다음 디코딩 문이 : a_new 및 a_old 모두 정수가인포매티카의 디코딩이 허용되지 않는 값

(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') 
) 

(그들은 전혀 나타나지 경우).

이 디코드 문을 실행할 때, 항상 0 (영)의 값을 반환

여기에 이상한 부분입니다. 나는 왜 내 인생에 대해 생각할 수 없다. 디버거에서 이것을 실행하고 디코드를 평가할 때 (익스프레션을 마우스 오른쪽 단추로 클릭하고 '익스프레션 평가'를 클릭하여 디코드를 붙여 넣음), YES 또는 NO CHANGE로 올바르게 평가됩니다. 그러나 실제로 디버거와 프로덕션 모두에서 실행될 때는 여전히 0으로 평가됩니다. 왜 아무도 알지 못해?

+0

+1 [내 좋아하는 DECODE (TRUE, ...) 트릭] 사용 (http://stackoverflow.com/a/9979906/95)! –

답변

0

표현이 멋지게 보입니다. 이 필드를 사용하는 필드의 정의 을 확인해야합니다. integer (또는 다른 숫자 데이터 유형)으로 선언되었거나 기본값이 할당되어 있습니다.

+1

마침내 문제가 발견되었습니다. 그것을 사용하는 필드는 올바르게 (문자열로) 형변환되었지만 하류 측은 나중에 매핑에서 값이 정수로 형변환되었습니다. 캐스트가 원래의 디코드로 매핑을 통해 전파되어 모든 것을 오염시키고있었습니다. 꽤 많이 생각하고 있었어. – bigbenbt

관련 문제