1

我有一个包含几列的表,带有 DATA_TYPE FLOATNUMBER。有整数和带小数位的小数位。
例如 234 , 4 , 0 , 23.000000004 , 234,4444 , ...

任务:

我希望这些数字最多有2小数。如果更多,则四舍五入。离开! 希望是通过sqldeveloper执行.sql脚本。欢迎使用更简单的方法!

简介

  • 如果超过 2 个小数位,则为 ROUND 数字
  • 更新值
  • 在几个选定的列上使用
  • .sql 脚本
  • sqldeveloper 优先
4

1 回答 1

8

最简单的可能是这样的

UPDATE table_name
   SET column1_name = round(column1_name, 2 ),
       column2_name = round(column2_name, 2 ),
       ...
       columnN_name = round(columnN_name, 2 )

您可以在其中输入要修改的列数。如果要动态生成脚本,可以编写一个匿名 PL/SQL 块,该块使用dba|all|user_tab_columns数据字典视图为每个表生成适当的 SQL 语句,并使用EXECUTE IMMEDIATEDBMS_SQL执行动态生成的 SQL 语句。这在编写、调试和维护方面要付出更多的努力,不过,如果您希望它在将来向表中添加新列时自动工作,这可能才值得。

如果您有FLOAT列,请注意浮点数本质上是不精确的。即使您四舍五入到 2 位小数,也不能保证存储的值始终是 2 位小数。您可能会发现比您预期的要大或小得多的值。如果您真的想确保所有数字都具有 2 特定精度,则应将这些列定义为数字而不是浮点数。

于 2013-10-09T00:02:23.167 回答