2017-06-12 97 views
2

表:SSIS 2008 R2:ROUND浮法列

create table float_dt_test 
(
    cola float, 
    colb float 
); 

插入:

insert into float_dt_test values(57,999.857894736842); 
insert into float_dt_test values(0.225,999.99); 

我想給定的數據導出到文件.txt使用SSIS。

我要出口值一輪6.

在txt文件

預期輸出:

Cola     Colb 
------------------------------------------- 
57      999.857895 
0.225     999.99 

爲此我寫了下面的查詢:

SELECT ROUND(Cola,6) as cola, 
     ROUND(Colb,6) as colb 
FROM float_dt_test; 

但之後獲取導出文件看起來像:

Cola     Colb 
------------------------------------------- 
57      999.85789499999998 
0.22500000000000001  999.99000000000001 

回答

4

舍入值不會改變內部表示。

四捨五入後,轉換爲十進制:

SELECT CONVERT(DECIMAL(10, 6), ROUND(Cola, 6)) as cola, 
     CONVERT(DECIMAL(10, 6), ROUND(Colb, 6)) as colb 
FROM float_dt_test; 

其實,ROUND()現在是多餘的。離開它不會造成任何傷害,因爲它使操作更加明確。

0

您可以通過使用數據轉換轉型做,直接在SSIS: enter image description here

+0

這不是個好主意。因爲他也需要整理數據。 –

+0

好點,他可能需要在數據轉換之前使用派生列轉換進行舍入 – Jayvee

1

DataFlow Task您可以從SSIS工具箱中添加兩個derived columns利用下列表達式:

(DT_NUMERIC,10,6)ROUND([Cola],6) 

(DT_NUMERIC,10,6)ROUND([Colb],6) 

,並映射兩個派生列到平面文件目標。