处理派生列中默认值的类型转换和条件

Handle both Type cast and Condition for Default in Derived Column

我创建了一个 SSIS 程序包,其中必须将两列 varchar(1) 类型映射到整数列。我使用 Derived Column 进行这项工作,并为这两个字段提供类型转换 (DT_I4)。但是,我发现在完整的数据集中,这两个字段中有没有值的记录,因此我必须键入 Cast 并在表达式中添加一个条件,如果 null 则默认为“0”。

到目前为止,我已经尝试了以下但无效

(IsNull[Notes Taken])?(DT_I4)"0":[Notes Taken]
(DT_I4)(IsNull[Notes Taken])?"0":[Notes Taken]

如何正确创建这个表达式

最简单的解决方案是使用 REPLACENULL 函数,例如:

REPLACENULL([Notes Taken], "0")  

然后 - 将其转换为 DT_I4。此函数用条件运算符替换您设计的逻辑。
你的两个公式都有错误。最突出的 - ISNULL 是一个函数,需要在其参数周围加上括号,ISNULL([Notes Taken]),括号仅定义数据流列。参见 MS Docs
然后,你的第一个表达式

(IsNull[Notes Taken])?(DT_I4)"0":[Notes Taken]

可能字段 [Notes Taken]DT_I4 的数据类型不匹配,DT_I4? : 运算符的第一个参数的数据类型。
你的第二个表达

(DT_I4)(IsNull[Notes Taken])?"0":[Notes Taken]  

将数据转换应用于逻辑函数 ISNULL,而不是完整的表达式。您应该将括号放在完整的 ? : 运算符周围,例如:

(DT_I4)(IsNull([Notes Taken])?"0":[Notes Taken])