将字符串转换为 Int SSIS

Convert String to Int SSIS

我有一个 string 的原始源和目标 table 它是十进制 (5,2),我尝试用规则更改它

但是当我运行任务时总是失败,谁能帮我看看哪里出了问题?

更新

我也试了(DT_DECIMAL,2)TRIM(NAME1)但是还是失败了

尝试结合使用 DECIMAL 和 FLOAT。我对此进行了测试并且成功了。

(DT_DECIMAL,2)(DT_R4)TRIM(NAME1)

这首先转换为浮点数,然后转换为小数。

任务失败可能是某些值无法转换(包含非数值)

在数据转换组件中,您可以将错误输出设置为 Ignore failure,然后如果 NAME1 无法转换为 DT_I8,则新列值将为 NULL

您可以在这篇有用的博客文章中阅读更多内容:

另一种解决方法

您可以使用 script Component 而不是 Derived Column

来实现此目的

只需添加一个脚本组件,添加一个类型为 DT_I8 的输出列(假设其名称为 OutColumn)并将 NAME1 列标记为输入。

在脚本 window 中编写以下脚本(使用 Vb.Net):

Public Class ScriptMain  
    Inherits UserComponent  

    Public Overrides Sub InputBuffer0_ProcessInputRow(ByVal Row As InputBuffer0)  


        Dim intValue as Int64

        If Not Row.NAME1_ISNULL AndAlso 
           Not String.iSnullOrEmpty(Row.NAME1.Trim) AndAlso 
           Int64.TryParse(Row.NAME1.Trim, intValue) Then

            Row.OutColumn = intValue

        Else

           Row.OutColumn_IsNull = True

        End If   

    End Sub  

End Class