Oracle字符串、数字、特殊符号、排序
遇到问题解决后请务必记录下来,也许某时就用到了,总之丢不怕。
话不多说,正T;
需求(针对不同需求,自行变更):
排序字符串 格式:
字段 Test
课程系数〔2013〕29号
课程编号〔2012〕233号
课程编排〔2013〕44号
课程编排〔2012〕1号
课程编排〔2012〕34号
…..
…….等
要求排序出
字段 Test
课程编号〔2012〕233号
课程编排〔2013〕44号
课程编排〔2012〕34号
课程系数〔2013〕29号
课程编排〔2012〕1号
经过一番测试和前辈们的总结,可用方法如下
Sql代码
to_number(translate(Test, '0123456789' || Test, '0123456789')) desc
亲们也可以使用这种
Sql代码
to_number(
substr(Test,instr(Test, '〕') + 1,
length(Test) -(instr(Test, '〕') + 1))
) desc
这种情况计算复制,而且对于数字+字符串任意组合将出现排序不正确的情况:
如
———————————–
税204号
税205号
税206号
税207号
这样的话将排序结果为:&nboracle账号sp;
税204号
税205号
税207号
税206号
———————————–