Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql SSI(DT_Decimal)到(DT_Str)删除小数的尾随零_Sql_Ssis - Fatal编程技术网

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

Sql SSI(DT_Decimal)到(DT_Str)删除小数的尾随零,sql,ssis,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)

当从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

提前谢谢。
弗朗西斯

关于“位置”的测试呢 如果大于,则追加“0000”,并取字符串的左侧部分。左函数的长度参数应为“.”加4的位置

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

使用除法时请小心。如果你除以零,你会得到一个错误。 我通常被NULLIF除(Rate,0),如果我尝试被零除,则得到NULL。

一个选项:

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

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