Sql SSI(DT_Decimal)到(DT_Str)删除小数的尾随零
当从DT_Decimal转换为DT_Str时,派生列会从我的结果中去掉小数 例: -0.1250返回-0.125 -2.0000返回-2 有没有一种方法可以保持零,使最后的字符串始终是四位小数 以下是我计算十进制值的派生列: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,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