带额外小数的 SSIS 浮点数据
SSIS Float Data with extra decimals
Visual Studio 2015 年;资料来源:OLEDB(SQL2012);目标:平面文件 (csv)
我有需要从中提取数据的存储过程,但我无法控制这些过程,它们具有浮点数据类型的输出。在 SSMS 中,数据看起来像 3.45985,但在 SSIS 中,输出 csv 文件的数据像 3.45989999999(数字是编造的,但你明白了)。
我确实了解 float 的工作原理,并且了解 float 不是一种精确的数据类型——但我无法控制存储过程。我挣扎的地方是如何解决它。我读过您可以在平面文件目标中将输出设置为字符串,但它似乎不起作用。我也尝试过从存储过程中获取输出并将结果放入 table 变量中,并且已经成功地格式化了我需要的格式。但是,一些存储过程已经在对临时 table 执行一些插入操作,当我尝试将结果存储到 table 变量时,我遇到了错误。所以,那个解决方案真的不适合我。
我的业务用户习惯于在遗留应用程序中使用类似 3.45985 的代码。我正在重写这些,以通过 SSIS 自动完成提取,而不必支持遗留业务线应用程序。
您可以使用派生列转换将数字四舍五入并将其转换为 decimal
,表达式如下:
(DT_DECIMAL, 5) ROUND([ColumnName], 5)
Visual Studio 2015 年;资料来源:OLEDB(SQL2012);目标:平面文件 (csv)
我有需要从中提取数据的存储过程,但我无法控制这些过程,它们具有浮点数据类型的输出。在 SSMS 中,数据看起来像 3.45985,但在 SSIS 中,输出 csv 文件的数据像 3.45989999999(数字是编造的,但你明白了)。
我确实了解 float 的工作原理,并且了解 float 不是一种精确的数据类型——但我无法控制存储过程。我挣扎的地方是如何解决它。我读过您可以在平面文件目标中将输出设置为字符串,但它似乎不起作用。我也尝试过从存储过程中获取输出并将结果放入 table 变量中,并且已经成功地格式化了我需要的格式。但是,一些存储过程已经在对临时 table 执行一些插入操作,当我尝试将结果存储到 table 变量时,我遇到了错误。所以,那个解决方案真的不适合我。
我的业务用户习惯于在遗留应用程序中使用类似 3.45985 的代码。我正在重写这些,以通过 SSIS 自动完成提取,而不必支持遗留业务线应用程序。
您可以使用派生列转换将数字四舍五入并将其转换为 decimal
,表达式如下:
(DT_DECIMAL, 5) ROUND([ColumnName], 5)