日期:2014-05-16  浏览次数:20529 次

字符串 数字 特殊符号 排序
遇到问题解决后请务必记录下来,也许某时就用到了,总之丢不怕。
话不多说,正T;
需求(针对不同需求,自行变更):
排序字符串 格式:
字段     Test
课程系数〔2013〕29号
课程编号〔2012〕233号
课程编排〔2013〕44号
课程编排〔2012〕1号
课程编排〔2012〕34号
.....
.......等
要求排序出
字段     Test
课程编号〔2012〕233号
课程编排〔2013〕44号
课程编排〔2012〕34号
课程系数〔2013〕29号
课程编排〔2012〕1号

经过一番测试和前辈们的总结,可用方法如下
to_number(translate(Test, '0123456789' || Test, '0123456789')) desc


亲们也可以使用这种
to_number(
          substr(Test,instr(Test, '〕') + 1,
          length(Test) -(instr(Test, '〕') + 1))
         ) desc

这种情况计算复制,而且对于数字+字符串任意组合将出现排序不正确的情况:

-----------------------------------
税204号
税205号
税206号
税207号
这样的话将排序结果为:
税204号
税205号
税207号
税206号
-----------------------------------
有图有真像,附件:QQ截图20130425194438.jpg

如有异常情况,请选择其他方式,自行google