首页 > 解决方案 > DT_NUMERIC 和 DT_DECIMAL 之间有什么区别吗?

问题描述

我正在映射我的 SSIS 包中的列,我注意到我在 SQL 中的表有十进制列,但是当我使用十进制将 excel 列映射到我的数据库表时出现错误。我需要使用数字而不是十进制吗?

标签: excelssis

解决方案


是的,它们是不同的——数字“更大”:16 对 12 字节;刻度 0 - 38 与 0 - 28;最大精度 38 与 29:

DT_DECIMAL

具有固定精度和固定比例的精确数值。此数据类型是一个 12 字节的无符号整数,带有单独的符号,范围为 0 到 28,最大精度为 29。

DT_NUMERIC

具有固定精度和比例的精确数值。此数据类型是一个 16 字节的无符号整数,带有单独的符号,范围为 0 - 38,最大精度为 38。

下表显示了合法的 SSIS “cast” 操作:

https://docs.microsoft.com/en-us/sql/integration-services/expressions/cast-ssis-expression?view=sql-server-ver15

合法的 SSIS 演员操作

另请参阅此链接:

https://stackoverflow.com/a/24519244/421195

好吧,有人指出我需要添加缺少的比例。


推荐阅读