Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在存储过程中保持十进制精度?_Sql_Stored Procedures_Decimal_Precision - Fatal编程技术网

Sql 如何在存储过程中保持十进制精度?

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不是十进制格式 因

我在一个表中有一个数据类型为decimal(10,2)的列,当我尝试在存储过程中更新该列时,我正在丢失2位精度

如果我像单个查询一样更新字段,它可以正常工作,但在存储过程中它会失去精度

例如:

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风格的语法错误。