SSIS:在条件表达式中指定NULL(例如在Derived列中)

时间:2015-07-10 16:31:39

标签: ssis

所有 亚历山大·费多连科完全解决了我的问题(c) (How to convert blank into null in ssis)显示如何有条件地取代任何东西""用NULL。

我只想完全了解它在SSIS中的工作原理。在我的设置中,我有源列Varchar(8)和目标列浮点数。 它与这个样本完美配合:

`ColumnName == "" ? NULL(DT_WSTR,50) : ColumnName

这是指定具有DT_WSTR,50的NULL的唯一方法,我的目标是浮点数,即SSIS中的DT_R4,我试图将它与DT_R4一起使用并且它失败了,所以看起来它与Source列相关联。 我不明白我不能使用它,我在派生框中添加新列,如: enter code here ColumnName =="" ? NULL(DT_R4):ColumnName     ColumnName =="" ? NULL(DT_R4):ColumnName

非常感谢 中号

1 个答案:

答案 0 :(得分:0)

我怀疑你的问题是ColumnName的数据类型是字符串。至少,这个比较,ColumnName == ""意味着它是一个字符串类型(unicode或ascii)

所以,当你在做什么时

ColumnName == "" ? NULL(DT_R4) : ColumnName

SSIS将会将其视为

(condition) ? (generate a NULL that is typed as float) : (some string type)

由于字符串和浮点数不兼容,因此不起作用。相反,您还需要强制在ColumnName上强制转换

ColumnName == "" ? NULL(DT_R4) : (DT_R4) ColumnName

我遇到上述情况仍会产生不兼容错误的情况,因此我最终将所有错误都投射到目标类型

(DT_R4) (ColumnName == "" ? NULL(DT_R4) : (DT_R4) ColumnName)