将文本金额转换为十进制 - 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 中,您可以执行以下操作。
- 添加派生列
- 添加其中一种转化
- 回合:
(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
- 添加一个
Script Component
- 将
amount
标记为输入列
- 添加整数类型的输出列(例如
outAmount
)
添加以下代码:(使用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
在我的源文件中,我的金额列的值为
例如:
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 中,您可以执行以下操作。
- 添加派生列
- 添加其中一种转化
- 回合:
(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
- 添加一个
Script Component
- 将
amount
标记为输入列 - 添加整数类型的输出列(例如
outAmount
) 添加以下代码:(使用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