SSIS中字符串转换中的假定小数点

时间:2017-09-05 18:10:02

标签: sql-server ssis

我正在使用SSIS并且有一个平坦的固定宽度文件我正在进入一个以字符串形式出现的SQL DB表。它来自0000531164,需要以5311.64的形式写入SQL DB。

我正在使用派生列删除0,但我不确定是否需要添加。到表达式或是否有办法将假定的十进制正确转换为货币?

Current expression = (DT_WSTR,50)(DT_I8)(SUBSTRING(<Table Name>,21,16))

3 个答案:

答案 0 :(得分:0)

另一种方法是,在SQL Server端,使用STUFF,然后只使用CAST

declare @var varchar(64) = '0000531164'

select cast(stuff(@var,len(@var) - 1,0,'.') as decimal(32,2))

答案 1 :(得分:0)

在派生列中:

(DT_CY)([FieldName])/100

答案 2 :(得分:0)

我不认为我解释了(或完全理解)此时所需要的东西。我有一个固定宽度的文件,在同一个文件中有客户端级别和帐户级别。所以那些在包中使用条件拆分分开,然后我需要用a分隔数字。获得适当的价值。我最终使用了这个表达式(DT_CY)(SUBSTRING(填充,37,11)+“。”+ SUBSTRING(填充,48,2))其中“填充符”是我的固定宽度值,数字是开始和长度固定宽度文件。

过度思考它,这个线程帮助确定了需要的基线。谢谢大家。