我的表中有一個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