SSIS(DT_Decimal)到(DT_Str)删除小数的尾随零

时间:2010-10-05 13:28:53

标签: sql ssis

从DT_Decimal转换为DT_Str时,派生列会从我的结果中取出小数。

例: -0.1250返回-0.125 -2.0000返回-2

有没有办法让零保持最后一个字符串,总是有四位小数?

这是我的十进制值计算的派生列:

(DT_DECIMAL,4)ROUND((DT_Decimal,4)[Column 1] / (DT_DECIMAL,4)@[User::rate],2)

这是我的字符串表达式,将它带到右对齐的字符串,包含11个字符:

RIGHT(REPLICATE(" ",11) + TRIM((DT_STR,11,1252)
(DT_DECIMAL,4)ROUND((DT_Decimal,4)[Column 1] / (DT_DECIMAL,4)@[User::rate],2)
),11)

我正在使用SSIS 2008。

提前致谢。 弗朗西斯

2 个答案:

答案 0 :(得分:1)

测试“。”的位置怎么样? 如果比追加“0000”更好,并采取字符串的左侧部分。 Left函数的length参数应该是“。”的位置。加4

如果为零,则追加“.0000”

使用师时请小心。如果除以零,则会出现错误。 我通常除以NULLIF(Rate,0),如果我尝试除以零,则得到NULL。

答案 1 :(得分:0)

选项:

(DT_DECIMAL, 4)ROUND(User::rate,4) - removes extra zeroes

(DT_NUMERIC,18,4)ROUND(User::rate,4) - keeps zeroes