如图:
思路是需要一列转换为统一单位的数据,然后根据大小排序
--1.创建测试表
create table tmp as
select '10年' bond_period from dual union all
select '2年' bond_period from dual union all
select '91日14' bond_period from dual union all
select '3年15' bond_period from dual union all
select '182日' bond_period from dual union all
select '6月' bond_period from dual union all
select '7年' bond_period from dual union all
select '1年' bond_period from dual union all
select '15年' bond_period from dual union all
select '20年' bond_period from dual union all
select '273日' bond_period from dual union all
select '3月' bond_period from dual union all
select '5年' bond_period from dual union all
select '30年' bond_period from dual union all
select '8年' bond_period from dual union all
select '50年' bond_period from dual;
--2.sql实现
select bond_period,
decode(str,'年',num * 360 ,'月',num * 30,num) days
from(select bond_period,
regexp_substr(bond_period,'[0-9]+') num,
regexp_substr(bond_period,'[^0-9]+') str
from tmp
)
order by days
decode
的解->decode
regexp_substr
的解释->regexp_substr1,regexp_substr2