将文本金额转换为十进制 - ssis

Convert text Amount to decimal - ssis

在我的源文件中,我的金额列的值为

例如:

Amount
380.00
2,435.00

因此,当我尝试将其加载到目的地时,我希望将值转换为 int(12)

如何通过从文本中删除 ., 并加载到目标中来进行此转换。

Convert() 或 Try_Convert() to money 也将处理逗号和 $。

Select try_convert(money,'2,435.00')    -- 2435.00
Select try_convert(money,',435.00')   -- 2435.00

在 SSIS 中,您可以执行以下操作。

  1. 添加派生列
  2. 添加其中一种转化
    • 回合:(DT_I4)Amount
    • 上限:(DT_I4)CEILING(((DT_DECIMAL,2)Amount))
    • 楼层:(DT_I4)FLOOR(((DT_I4)(DT_DECIMAL,2)Amount))

注意:虽然我选择了 add as new column,但您也可以替换该列。

您可以使用 script component

  1. 添加一个Script Component
  2. amount标记为输入列
  3. 添加整数类型的输出列(例如 outAmount
  4. 添加以下代码:(使用vb.net)并假设amount列为string

    If Not Row.Amount_IsNull AndAlso
       Not String.IsNullOrEmpty(Row.Amount) Then
    
        Row.outAmount = CInt(Row.amount.Replace(".","").Replace(",",""))
    
    Else
    
        Row.outAmount _IsNull = True
    
    End If