Oracle:如何舍入和更新表中的所有数字?

时间:2013-10-08 23:52:36

标签: sql database oracle oracle-sqldeveloper sql-scripts

我有一个包含多个列的表,其中DATA_TYPE FLOAT NUMBER 。带小数位的整数和小数位 例如 234 4 0 23.000000004 234,4444 ,...

分配:

我希望数字在最大值处有 2位小数。如果更多,那么请向上舍入。关!
希望通过 sqldeveloper 执行 .sql 脚本。欢迎更轻松的方法!

概要

  • 如果超过2位小数,则为ROUND数字
  • 更新值
  • 在多个选择列上使用
  • .sql脚本
  • sqldeveloper preferred

1 个答案:

答案 0 :(得分:6)

最简单的可能是

之类的东西
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 IMMEDIATE或{{1}执行动态生成的SQL语句。这是编写,调试和维护的相当多的努力,但是如果你希望将来在将新列添加到表中时自动工作,这可能是值得的。

如果您有DBMS_SQL列,请注意浮动本身就是不精确的。即使您舍入到2位小数,也不能保证存储的值始终为2位十进制数。您可能会发现无限大或小于您期望的值。如果您确实希望确保所有数字都具有2个特定精度,则应将这些列定义为不浮动的数字。