Sql server 转换MS SQL浮点行,舍入为2位小数,我们可以使用MS Access进行舍入吗?

Sql server 转换MS SQL浮点行,舍入为2位小数,我们可以使用MS Access进行舍入吗?,sql-server,ms-access,financial,Sql Server,Ms Access,Financial,我们有一个遗留的金融应用程序正在运行,它不再受支持,但对我们很重要 我们已经在“price”和“selling_price”两列中手动覆盖了大约250行,现在应用程序在计算某些报告时崩溃 我认为我们的错误是在写数值之前没有将整数改为2位小数 我的计划是使用MS Access并更新行中的值 旧的价值观是: 24.48 6.98 100.10 但我们也写了一些值,比如 20.19802 99.42882 108.1302 我相信这会让它崩溃,当它超过它们时 仅仅进行MS Access查

我们有一个遗留的金融应用程序正在运行,它不再受支持,但对我们很重要

我们已经在“price”和“selling_price”两列中手动覆盖了大约250行,现在应用程序在计算某些报告时崩溃

我认为我们的错误是在写数值之前没有将整数改为2位小数

我的计划是使用MS Access并更新行中的值

旧的价值观是:

 24.48
  6.98
100.10
但我们也写了一些值,比如

 20.19802
 99.42882
108.1302
我相信这会让它崩溃,当它超过它们时

仅仅进行MS Access查询并用舍入值覆盖是否是一个好主意?或者在MS SQL选项卡级别上,使用使用T-SQL函数修改的SQL查询更准确吗?我的想法是用ROUND(108.1302,2)覆盖

有很多MS SQL经验的人

此行的类型为float,长度53,刻度为0,允许Null=否

我不太清楚内部发生了什么以及应用程序期望的是什么,因为float是以二进制形式存储的,所以我们看到的与内部存储的不一样

在MS Access中,我们使用ODBC连接表,这几乎是相同的函数循环(108.1302,2),但这是否也会导致相同的结果


从您的经验来看,什么是最安全的,应该如何覆盖它?

如果您使用Access作为SQL Server后端的前端,那么这两种方法实际上应该是相同的

您可以在更新之前检查这一点,方法是在Access中以select语句的形式运行转换,然后以SQL传递语句的形式运行转换

SELECT
ColumnA, ROUND(ColumnA, 2) AS RoundedA
FROM TableName
WHERE ColumnA <> ROUND(ColumnA, 2) 
GROUP BY  ColumnA
ORDER BY  ColumnA
选择
圆柱A,圆形(圆柱A,2)作为圆形A
从表名
其中A列为圆形(A列,2)
按列分组a
按列排序A

检查它们是否匹配

我们要处理多少格式不正确的值?另外,当您已经在使用SQL Server时,涉及访问通常不是一个好的决定。我会在SQL Server中进行转换,以避免与源数据混淆(我假设不正确的数据是从Access移植到SQL Server的)。在SQL Server中使用DECIMAL数据类型也是值得的,大约有250行和2列。Access直接写入数据库,不涉及导入/导出。我觉得根本不允许我更改数据类型,因为主应用程序拥有数据库,这可能会导致进一步的问题。我们正在尝试尽可能少地侵入数据库,应用程序使用它所拥有的数据类型已经运行了很多年。嗨,汤姆,谢谢你,我做到了,我使用了MS Access,它成功了。这些都是链接表,我现在非常确定MS Access写入了正确的SQL,并在我在Access GUI中启动修改查询时将其发送到SQL Server。MS Access实际上是SQL Server用于许多任务的良好GUI。