Oracle 中序号含有数字,特殊字符组合排序
Oracle 中序号含有数字,特殊字符组合排序
在工作中碰到按某个序号字段排序,序号含有数字,数字和特殊字符的组合排序,详情如下图所示:


解决思路方法:将序号按特殊符合‘-’拆分为两个部分,‘-’之前为一个字段before_num,‘-’之后的为另一个字段behind_num,
利用substr()和instr()函数截取对应的字符,若把10排在9的后面,还需要在按长度排序
SELECT t.task_number,--序号 - - '-'之前 case when instr(t.task_number,'-')!=0 then substr(t.task_number,0,instr(t.task_number,'-')-1) else t.task_number end before_num, -- '-'之后 case when instr(t.task_number,'-')!=0 then substr(t.task_number,instr(t.task_number,'-')+1) else '0' end behind_num , r.typename from test t order by length(before_num),before_num,length(behind_num), behind_num
浙公网安备 33010602011771号