[英]Oracle SQL query to find min value from a string comprising of batch number
我在Oracle数据库中有一列ID,该列是一个字符串,其值类似859188_1、859188_2、859188_3,...,859188_n。 _之后的值是批号,即1、2、3,...,n。 我需要根据该批号选择最小编号。 最小值是859188_1。
尝试...
select id
from yourTable
where to_number(regexp_substr(ID, '[^_]+$')) =
(select min(to_number(regexp_substr(t2.ID, '[^_]+$')))
from yourTable t2
)
您需要根据_
之后的部分选择最小值。
如果像您的示例一样,前六个字符都相同,则可以执行以下操作:
select min(id) keep (dense_rank first order by length(id) asc, id asc) as min_id
from t;
也许像这样...
with
inputs ( id ) as (
select '100_1' from dual union all
select '100_3' from dual union all
select '100_12' from dual union all
select '101_3' from dual union all
select '101_5' from dual union all
select '101_9' from dual
)
-- end of test data; solution (SQL query) begins below this line
select min(id) keep (dense_rank first
order by to_number(substr(id, instr(id, '_') + 1))) as id
from inputs
group by substr(id, 1, instr(id, '_') - 1)
;
ID
-----
100_1
101_3
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.