如何增加到下一个数字

时间:2015-08-31 15:36:36

标签: oracle numbers number-formatting

我的表格中有一个NUMBER类型的字段。它具有如下值,

COL1
1
1.1
2
2.111
3
4.5

现在我有一个请求将其增加到同一类型的下一个最高数字。

如果值是整数,比如说1,我需要将它增加到2.如果值是十进制,比如说1.1,我需要将它增加到1.2。

任何有关如何操作的指示都会非常有用。

1 个答案:

答案 0 :(得分:2)

在BluShadow上构建2010年7月27日上午8:55:@ https://community.oracle.com/thread/1107846 ...

仍然可能是一种更简单的方法,但这似乎有效。

  select col1, case when floor(col1)=col1 
    then col1+1 
    else power(10,-1*
    regexp_count(regexp_replace(col1,'[0-9]*\.([0-9])','\1'),'[0-9]'))+col1 end as nextNum 
  from (
  select 1  as col1 from dual union all
  Select 1.1 as col1 from dual union all
  select 2 as col1 from dual union all
  select 2.111 as col1 from dual union all
  select 3 as col1 from dual union all
  select 4.5 as col1 from dual) b

这是做什么的: 使用case语句比较col1到col1的底限(基本上找出是否有小数),如果不是简单地添加1.

如果有小数计数多少。使用幂函数和基数10来识别正确的小数位置以添加一个,然后将其添加回col1 base。