将文本数量转换为十进制 - ssis

时间:2017-03-31 17:17:22

标签: sql-server ssis

在我的源文件中,我有一个值为

的数量列

例如:

Amount
380.00
2,435.00

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

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

3 个答案:

答案 0 :(得分:2)

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

  1. 添加派生列
    DCO
  2. 添加其中一项转化 Convert
    • 回合:(DT_I4)Amount
    • 天花板:(DT_I4)CEILING(((DT_DECIMAL,2)Amount))
    • 楼层:(DT_I4)FLOOR(((DT_I4)(DT_DECIMAL,2)Amount))
  3. 注意:虽然我选择add as new column,但您也可以替换该列。

答案 1 :(得分:1)

转换()或Try_Convert()到money将处理逗号和$。

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

答案 2 :(得分:1)

您可以使用script component

来实现此目的
  1. 添加Script Component
  2. amount标记为输入列
  3. 添加integer(ex outAmount
  4. 类型的输出列
  5. 添加以下代码:(使用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