如何增加到下一个数字
How to increment to next number
我的 table 中有一个 NUMBER 类型的字段。它具有如下值,
COL1
1
1.1
2
2.111
3
4.5
现在我有一个请求,将其增加到下一个同类的最高数字。
如果值是整数,比如 1,我需要将它递增到 2。如果值是小数,比如 1.1,我需要将它递增到 1.2。
关于如何操作的任何指示都会非常有帮助。
2010 年 7 月 27 日在 BluShadow 上构建 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])',''),'[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 基数。
我的 table 中有一个 NUMBER 类型的字段。它具有如下值,
COL1
1
1.1
2
2.111
3
4.5
现在我有一个请求,将其增加到下一个同类的最高数字。
如果值是整数,比如 1,我需要将它递增到 2。如果值是小数,比如 1.1,我需要将它递增到 1.2。
关于如何操作的任何指示都会非常有帮助。
2010 年 7 月 27 日在 BluShadow 上构建 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])',''),'[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 基数。