试图通过乘以.001来移动小数。为什么要改变规模和精确?

时间:2013-11-25 21:19:19

标签: substring ssis numeric

我正在使用SSIS 2008 R2。我有派生列DER_Package_Size,我试图执行以下表达式:

(DT_NUMERIC,8,3)(SUBSTRING(TotalDBRecords,44,8))

这将返回一个数值,例如“00050000”。如果我将此表达式保留为原样,则此记录将作为“00050000.000”进入数据库。正确的值是00050.000。我现在想我需要将结果乘以.001以获得正确位置的小数。当我这样做到上面的表达式结束时,我遇到了问题。它将该派生列的精度和比例分别更改为12和6,而不是它应该是8和3。

对此的任何意见将不胜感激。提前谢谢。

1 个答案:

答案 0 :(得分:0)

如评论中@mike sherrill'catcall'所述,将2个数字乘以精度3将导致数字具有精确度6.

您只需要另一个强制转换表达式即可将结果恢复为3:

(DT_NUMERIC,8,3)(DT_NUMERIC,8,3)(SUBSTRING(TotalDBRecords,44,8)) * .001