2015-08-31 73 views
1

我的表中有一个NUMBER类型的字段。它具有如下的值,如何增加到下一个号码

COL1 
1 
1.1 
2 
2.111 
3 
4.5 

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

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

任何关于如何做到这一点的指针将非常有帮助。

+0

https://community.oracle.com/thread/1107846可能有帮助...寻找更简单的东西。 – xQbert

回答

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底座。

+0

这对我有用,谢谢! – Shankar