Sql 如何在存储过程中保持十进制精度?
我在一个表中有一个数据类型为decimal(10,2)的列,当我尝试在存储过程中更新该列时,我正在丢失2位精度 如果我像单个查询一样更新字段,它可以正常工作,但在存储过程中它会失去精度 例如:Sql 如何在存储过程中保持十进制精度?,sql,stored-procedures,decimal,precision,Sql,Stored Procedures,Decimal,Precision,我在一个表中有一个数据类型为decimal(10,2)的列,当我尝试在存储过程中更新该列时,我正在丢失2位精度 如果我像单个查询一样更新字段,它可以正常工作,但在存储过程中它会失去精度 例如: UPDATE table SET decimal(10,2) column = decimal(10, 2) column / 100 示例:197.50当更新结果为197.00 谢谢我认为,在您的RDMBS中,运行时转换会在列/100上自动完成,即: 列为十进制格式,并且 100不是十进制格式 因
UPDATE table
SET decimal(10,2) column = decimal(10, 2) column / 100
示例:197.50
当更新结果为197.00
谢谢我认为,在您的
RDMBS
中,运行时转换会在列/100上自动完成,即:
列
为十进制格式,并且
100
不是十进制格式
因此,您的解决方案将100
更改为十进制格式,如下所示:
100.00
CAST(100为十进制(10,2))
(十进制(10,2)100)
解决了问题。由于某些原因,/100在我尝试*0.01时无法保持精度。您是否真的将某个值除以100?您使用的是哪种rdbms?尝试/100.0强制浮点计算。这适用于哪种rdbms?请添加一个标记,以指定您使用的是
mysql
、postgresql
、sqlserver
、oracle
还是db2
——还是其他完全相同的东西。让我们看看表定义和实际的UPDATE语句。您列出的内容给出了至少一种SQL风格的语法错误。