Database SSIS导入MS Access数据库期间SQL Server实/浮点精度发生更改

Database SSIS导入MS Access数据库期间SQL Server实/浮点精度发生更改,database,ms-access,ssis,types,precision,Database,Ms Access,Ssis,Types,Precision,我使用SSIS从SQL Server数据库中的两个视图中获取结果,将它们合并(使用适当的映射),过滤它们并将它们放入Access数据库中 这一过程正在进行,但某些数据的精度正在发生变化 我已经意识到存储近似值(例如)的正常浮点/实数问题,但是SSI引用的视图(“数据传输视图”)是从其他视图(“部件级视图”,从NVARCHAR转换为实数/浮点)中选择的,这些视图以以下方式显式转换: ,CONVERT(real,ISNULL(FieldName, 0)) AS Alias 并显示在“数据传输”视图

我使用SSIS从SQL Server数据库中的两个视图中获取结果,将它们合并(使用适当的映射),过滤它们并将它们放入Access数据库中

这一过程正在进行,但某些数据的精度正在发生变化

我已经意识到存储近似值(例如)的正常浮点/实数问题,但是SSI引用的视图(“数据传输视图”)是从其他视图(“部件级视图”,从NVARCHAR转换为实数/浮点)中选择的,这些视图以以下方式显式转换:

,CONVERT(real,ISNULL(FieldName, 0)) AS Alias
并显示在“数据传输”视图中,结果为2 d.p。 Access列定义为字段大小为双精度,小数位数为2)的数字

然而,浮点/实数近似值显示在access中,而不是2 d.p.的数字

访问字段必须是数字而不是文本,所以我不能重铸到nvarchar

有没有简单的解决办法

更新:将字段大小从双字段更改为单字段可以解决此问题。
为什么Double的字段大小会改变数字的精度,为什么不按照指定的Double小数位数显示?

查看Access帮助主题中的DecimalPlaces属性:

“注意,如果Format属性为空或设置为General Number,则DecimalPlaces属性设置无效。”


因此,请尝试修改字段的Format属性,以查看是否可以显示所需内容

一般来说,当有人对两种Access/Jet/ACE数据类型之间的差异提出疑问时,帮助文件显然是开始的地方。太棒了,谢谢大家。这是我第一次使用SSI,并将Access用作数据目的地,因此要找出哪个应用程序的帮助需要查看,或者流程的哪个部分没有按照我的预期工作,这是一件棘手的事情。谢谢。正如@HansUp所解释的,Jet/ACE字段的小数点属性对存储精度没有影响,只对默认显示格式有影响。如果需要控制小数的精度,则必须使用小数字段,但Jet/ACE中对该字段的支持非常差(事实上,在UI中根本不支持)。货币字段将小数存储到4位,因此这是许多人在不需要更高精度时使用的一种替代方法。最后,如果您将源数据转换为使用固定数量的小数,则它将与您附加的精确小数值一起存储。