2013-11-25 2 views
0

Я использую SSIS 2008 R2. У меня есть полученный DER_Package_Size столбца и я попытка выполнить следующее выражение:Попытка перемещения десятичной дроби путем умножения на .001. Почему он меняет масштаб и точность?

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

Это возвращает числовое значение, например, «00050000». Если оставить это выражение как есть, эта запись войдет в базу данных как «00050000.000». Правильное значение 00050.000. Теперь я думаю, что мне нужно умножить этот результат на .001, чтобы получить десятичное значение в нужном месте. У меня возникают проблемы, когда я делаю это до конца вышеприведенного выражения. Он изменяет точность и масштаб для этого производного столбца на 12 и 6 соответственно, вместо 8 и 3 он должен быть.

Любой ввод на это был бы весьма полезен. Заранее спасибо.

+0

результат '1,001 * 1.001' является' 1.002001'. Шесть мест справа от десятичной точки. [SQL Server имеет документ] (http://technet.microsoft.com/en-us/library/ms190476.aspx) о влиянии арифметики на точность и масштаб. –

ответ

0

Как упомянуто Шеррилл «@ Mike освистывать» в комментариях, умножая 2 цифры, каждый с точностью 3 приведет к числовой с точностью 6.

Вам просто нужно другое выражение произнесения, чтобы получить результат обратно вниз 3:

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

Смежные вопросы