如何在ssis数据流任务中处理数据类型双精度浮点数[DT_R8]

Mah*_*344 2 sql sql-server ssis

我有 SSIS 数据流任务,我需要将数据从一个 sql 数据库传输到另一个 sql 数据库。我在 SQL 中的源数据库列数据类型是float,在 ssis 中它的double-precision float [DT_R8]. 目标列数据类型是Varchar(50). 当我执行数据流时,传输到目标表的数据与源数据不同,例如:

    +------------+---------------------------------+
    | SourceValue| DestinationValue After execution|
    +------------+---------------------------------+
    | 0.579      | 0.578999999999999965            |
    | 0.637      | 0.63700000000000001             |
    | 0.503      | 0.503                           |
    +------------+---------------------------------+
Run Code Online (Sandbox Code Playgroud)

因此,对于某些值,它相同,但对于其他值则不同。我已经尝试了 3 种方法来解决这个问题:-

  1. 试图将查询转换为 cast(col as varchar)
  2. 试图投射为浮点数 cast(col as float)
  3. 试图更改与源 ie 相同的 SSIS 目标列中的数据类型。double-precision float [DT_R8]. 虽然我收到警告说数据类型在执行时需要改变。

但是以上步骤都没有解决我的问题。

Mah*_*344 6

我发现在源流中我已将数据类型从 更改double-precision float [DT_R8]DT_DECIMAL. 它现在工作正常,值按原样传输到目标表。

例如:

+------------+---------------------------------+
    | SourceValue| DestinationValue After execution|
    +------------+---------------------------------+
    | 0.579      | 0.579                           |
    | 0.637      | 0.637                           |
    | 0.503      | 0.503                           |
    +------------+---------------------------------+
Run Code Online (Sandbox Code Playgroud)