2017-06-12 101 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) 

,并映射两个派生列到平面文件目标。