2 u013488540 u013488540 于 2014.01.15 22:59 提问

oracle中sql 截取字段中的数字按条件排序

请教各位,这个sql怎么拼,我的字段(code)规则是:备案事项[2014]1,前面中文是固定的,然后是括起来的年份(可能是2013,2014,2015等等),后面是流水号(从1,2,3,...,10,..递增的),我想查出所有2013年的数据,要求按后面的流程号数字倒叙排列。恳求大神帮忙,谢谢!

1个回答

sljjyy
sljjyy   2014.01.16 09:57

假设字段名是code
SELECT code, substr(code,INSTR(code,'[', 0, 1)+1,INSTR(code,']', 0, 1)-1) AS year,
to_number(substr(code, INSTR(code,']', 0, 1))) AS num
FROM table
WHERE year = '2013'
ORDER BY num DESC
试试这个 没调试过
自己看看
year是根据[]的位置截断得到年份
然后把]后面的截断得到流水号 因为位数不一样 所以排序的时候需要转换成数字
思路就是这样

ps:虽然之前有说前面的文字是固定的 不过个人觉得还是根据格式判定的好 顺便学习这个编写的思路

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!