【问题标题】:SSIS Float Data with extra decimals带有额外小数的 SSIS 浮点数据
【发布时间】:2018-06-26 13:51:21
【问题描述】:

Visual Studio 2015;来源:OLEDB(SQL2012);目标:平面文件(csv)

我有存储过程,我需要从中提取数据,但我无法控制这些存储过程具有浮点数据类型的输出。在 SSMS 中,数据看起来类似于 3.45985,但在 SSIS 中,输出 csv 文件的数据类似于 3.45989999999(数字是虚构的,但您明白了)。

我确实了解 float 的工作原理,并且知道 float 不是一种精确的数据类型——但我无法控制存储过程。我苦苦挣扎的地方是如何解决它。我读过您可以将输出设置为平面文件目标中的字符串,但它似乎不起作用。我还尝试从存储过程中获取输出并将结果放入表变量中,并且已经成功格式化了我需要的格式。但是,一些存储过程已经在临时表中进行了一些插入,当我尝试将结果存储到表变量中时,我遇到了错误。所以,那个解决方案真的不适合我。

我的业务用户已经习惯了这些在旧版应用程序中类似于 3.45985。我正在重写这些以通过 SSIS 完成所有操作以自动化提取,而不必支持旧的业务线应用程序。

【问题讨论】:

    标签: sql-server csv ssis etl


    【解决方案1】:

    您可以使用派生列转换将数字向上舍入并将其转换为decimal,表达式如下:

    (DT_DECIMAL, 5) ROUND([ColumnName], 5)
    

    【讨论】:

    • 我不需要总是有 x 小数。但是当我这样做时:ROUND([Interest Rate %],7),我的输出有更多的值,小数点右边有 14 位。而之前没有那么多。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-06
    • 1970-01-01
    • 1970-01-01
    • 2016-10-19
    相关资源
    最近更新 更多