【问题标题】:SSIS: Specify NULL in conditional expression (e.g in Derived column)SSIS:在条件表达式中指定 NULL(例如在派生列中)
【发布时间】:2015-07-10 16:31:39
【问题描述】:

全部 我已经用 Alexander Fedorenko(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 hereColumnName == "" ? NULL(DT_R4):列名 列名 == "" ? NULL(DT_R4) : 列名

非常感谢 M

【问题讨论】:

    标签: ssis


    【解决方案1】:

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

    【讨论】:

    • 感谢比尔的解释。最好的。米
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多