所有 亚历山大·费多连科完全解决了我的问题(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
非常感谢 中号
答案 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)