【问题标题】:How to increment to next number如何递增到下一个数字
【发布时间】:2015-08-31 15:36:35
【问题描述】:

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

COL1
1
1.1
2
2.111
3
4.5

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

如果值是整数,比如 1,我需要将其递增到 2。如果值是十进制,比如 1.1,我需要将其递增到 1.2。

任何关于如何做的指示都会非常有帮助。

【问题讨论】:

标签: oracle numbers number-formatting


【解决方案1】:

基于 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 基数。

【讨论】:

    猜你喜欢
    • 2011-11-14
    • 2019-06-28
    • 1970-01-01
    • 2015-11-16
    • 1970-01-01
    • 1970-01-01
    • 2022-11-21
    • 1970-01-01
    • 2022-01-19
    相关资源
    最近更新 更多