我的表中有一个NUMBER类型的字段。它具有如下的值,如何增加到下一个号码
COL1
1
1.1
2
2.111
3
4.5
现在我有一个请求,将其增加到相同种类的下一个最高数字。
如果这个值是整数,比如说1,我需要将它增加到2.如果这个值是十进制,比如说1.1,我需要将它增加到1.2。
任何关于如何做到这一点的指针将非常有帮助。
我的表中有一个NUMBER类型的字段。它具有如下的值,如何增加到下一个号码
COL1
1
1.1
2
2.111
3
4.5
现在我有一个请求,将其增加到相同种类的下一个最高数字。
如果这个值是整数,比如说1,我需要将它增加到2.如果这个值是十进制,比如说1.1,我需要将它增加到1.2。
任何关于如何做到这一点的指针将非常有帮助。
大厦BluShadow 2010年7月27日8:55 AM:@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底座。
这对我有用,谢谢! – Shankar
https://community.oracle.com/thread/1107846可能有帮助...寻找更简单的东西。 – xQbert