SSIS 2008 R2:围绕浮动列
SSIS 2008 R2: ROUND the float column
Table:
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);
我想使用 SSIS 将给定数据导出到 .txt
文件。
我想导出第 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
舍入值不会改变内部表示。
四舍五入后转为小数:
SELECT CONVERT(DECIMAL(10, 6), ROUND(Cola, 6)) as cola,
CONVERT(DECIMAL(10, 6), ROUND(Colb, 6)) as colb
FROM float_dt_test;
实际上,ROUND()
现在是多余的。保留它不会造成任何伤害,因为它使操作明确。
您可以使用数据转换直接在 SSIS 中执行此操作:
在 DataFlow Task
中,您可以使用以下表达式从 SSIS 工具箱中添加两个 derived columns
:
(DT_NUMERIC,10,6)ROUND([Cola],6)
(DT_NUMERIC,10,6)ROUND([Colb],6)
并将两个派生列映射到平面文件目标。
Table:
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);
我想使用 SSIS 将给定数据导出到 .txt
文件。
我想导出第 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
舍入值不会改变内部表示。
四舍五入后转为小数:
SELECT CONVERT(DECIMAL(10, 6), ROUND(Cola, 6)) as cola,
CONVERT(DECIMAL(10, 6), ROUND(Colb, 6)) as colb
FROM float_dt_test;
实际上,ROUND()
现在是多余的。保留它不会造成任何伤害,因为它使操作明确。
您可以使用数据转换直接在 SSIS 中执行此操作:
在 DataFlow Task
中,您可以使用以下表达式从 SSIS 工具箱中添加两个 derived columns
:
(DT_NUMERIC,10,6)ROUND([Cola],6)
(DT_NUMERIC,10,6)ROUND([Colb],6)
并将两个派生列映射到平面文件目标。