2015-08-31 71 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