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

flo*_*opp 1 sql database oracle sql-scripts oracle-sqldeveloper

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

分配:

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

剧情简介:

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

Jus*_*ave 6

最简单的事情就是这样

UPDATE table_name
   SET column1_name = round(column1_name, 2 ),
       column2_name = round(column2_name, 2 ),
       ...
       columnN_name = round(columnN_name, 2 )
Run Code Online (Sandbox Code Playgroud)

在哪里输入要修改的列数.如果要动态生成脚本,可以编写一个匿名PL/SQL块,该块使用dba|all|user_tab_columns数据字典视图为每个表生成相应的SQL语句,并使用EXECUTE IMMEDIATEDBMS_SQL执行动态生成的SQL语句.这是编写,调试和维护的相当多的努力,但是如果你希望将来在将新列添加到表中时自动工作,这可能是值得的.

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