这个SSIS派生的表达式出了什么问题

时间:2016-05-26 08:08:07

标签: ssis conditional

((DT_STR,20,1252)OccuranceRegion == "US" && ((DT_STR,20,1252)LegalEntity == "AECB" || (DT_STR,20,1252)LegalEntity == "FSB" || (DT_STR,20,1252)LegalEntity == "Both")) 
? DATEADD("day",30,CapCreationDt) : (ISNULL(MaxofRevSCIAndSCI) ? (DT_DATE)"1900-01-01" : MaxofRevSCIAndSCI)

每当我把条件设为

OccuranceRegion == "US" AND 
LegalEntity is null

结果是NULL,我还检查了MaxofRevSCIAndSCI的值,它不是null。为什么,它不会进入其他部分?

1 个答案:

答案 0 :(得分:0)

NULL的任何函数(除了专门的,#34; NULL-killing"函数ISNULL等)都计算为NULL。您只将LegalEntity与字符串常量进行比较。如果LegalEntity为NULL,则这些表达式将计算为NULL。您需要将LegalEntity中的NULL值替换为其他值。可能是上游的派生列

ISNULL(LegalEntity) ? "##NULL#' : LegalEntity

比在表达式本身中执行此操作更容易(因为SSIS表达式对于调试来说是可怕的)。