【问题标题】:SSIS 2008 - Float value exported to exponential value in Flat file destinationSSIS 2008 - 在平面文件目标中导出为指数值的浮点值
【发布时间】:2021-08-18 13:12:52
【问题描述】:

我正在尝试将表导出到平面文件目标。浮点列值 (0.0911780821917808) 导出到平面文件中的 9.1178082191780821E-2。

表格 创建表测试 ( col1 浮动 )

Col1 0.0911780821917808

将此表导出到平面文件目标。但是导出到 .txt 文件中的值“9.1178082191780821E-2”。但是在 OLE DB Source 之后,DataViewer 中会出现正确的值。

请指导将值原样导出到平面文件。

提前感谢您的所有时间

问候,

斯大林

【问题讨论】:

    标签: ssis ssis-2012 ssis-2008


    【解决方案1】:

    我之前也遇到过类似的问题,并且被证明是最安全的方法是通过 STR 函数从源代码转换为字符串。例如,您可以使用如下 SQL 查询读取 OLEDB 源中的表:

    SELECT LTRIM(STR(col1,25,18) ) Col1casted
    FROM
    TEST
    

    那么您可能需要重新创建平面文件目标(或更改数据类型)

    在此示例中,我将转换后的值设置为 25 长,其中 18 位是小数,但您可以进行调整以确保它涵盖表中的值范围。

    对于甲骨文:

    SELECT TO_CHAR(0.0911780821917808267712341,'9D9999999999999999') FROM DUAL;
    

    以上格式设置为16位小数,以sql fiddle为例

    https://dbfiddle.uk/?rdbms=oracle_11.2&fiddle=487fe7bf6cf3a2264f988523e5ac7a3d

    【讨论】:

    • 非常感谢。我正在使用 Oracle 数据库。你能告诉我Oracle中的等效函数是什么吗?
    • 我尝试通过 TO_CHAR(field) 查询该字段。它以“.091178082191780821917808219178082191781”的形式出现
    • 底层表字段是数字字段,没有精度和比例。所以我需要将值原样导出到平面文件。
    • 是的,TO_CHAR 应该可以工作,您也可以设置格式。这个长数字可能是Oracle内部实际存储的,您可以这样保留或根据业务需要设置小数位数。我已经用一个例子更新了答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 2014-12-23
    • 2012-03-19
    • 1970-01-01
    相关资源
    最近更新 更多