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

SSIS: Specify NULL in conditional expression (e.g in Derived column)

全部 我已经用 Alexander Fedorenko(c) 的完美解决方案解决了我的问题 (How to convert blank into null in ssis) 它显示了如何有条件地用 NULL 替换 nothing ""。

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

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

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

非常感谢 M

我怀疑你的问题是 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)