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币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
oracle中对字母加数字列的排序及截取字符串函数substr介绍
假设列名为No,类型为varchar2,100行数据里分别存放着W1~W100。 如果查询语句为: select * from table order by No 会得到按W1,W10,W100,W11,W12,……,W2,W20,W21,……的排序。 如果我们想得到按照数字大小来排序怎么做呢? 一个解决方法是截去W,并将剩下的数字(注意:此时为varchar2类型)转变为number类
Oracle,SQL多重排序--多字段排序
我们在查询出数据的时候,需要根据某几个字段进行排序。 比如:查询车辆的时候,根据车辆的类型或者注册时间查询车辆信息,然后根据车辆的号码排序,再根据车辆类型进行排序,再或者根据车辆的注册时间进行排序。具体的查询语句应该是: Sql代码  select hphm,hpzl,time from car  where time > (sysdate - 1) and hpzl
SQL截取一个字段中不确定字母和数字并按照数字顺序排序
 ---------------------------创建时间:08-3-11--创建人:WJH--功能:拆分testContent字段并按照数字排序---------------------------建立临时表CREATE TABLE #a (testID INT identity(1,1),testContent VARCHAR(50))--插数据INSERT #a SELECT 
oracle中字符型字段按数字排序
今天在转换数据时,遇到了一个主键排序的问题。字符型的主键,保存的都是数字,数据导过来以后发现数据排序都是乱的,就想着按数字规则排序。 但发现to_number总是报错,就想着里面应该是有字符存在。后来使用了正则关系式,问题解决。 以下是正则关系式的两种用法,记录下来。 select * from xtyhxx order by to_number(translate(yhid, '01234
MySQL取出数字字符串的一部分,然后按照数值大小排序
之前做过一张表,表中有个字段是IP,varvhar类型的。所以这样一来ASC或者DESC排序的话是按照字符串的方式排序的。 后来老大提出想要按照IP最后一位的数值大小来排序。 即:例如IP为10.11.12.13,则按照13这一位的数值的大小来排序。 表为manage_mainframe_info,字段为ip_address。 先把该字段最后一位内容截取出来然后转为数字然后
oracle数据库表中,某个字段是varchar2类型的但其实存的是数字,这样安装该字段排序,排出来的顺序是不对的,sql语句怎么写就可以排序了?
oracle数据库表中,某个字段是varchar2类型的但其实存的是数字,这样安装该字段排序,排出来的顺序是不对的,sql语句怎么写就可以排序了? 如下,test表中,有个grade_order字段是varchar2类型的,我想对test表按照test表的grade_order字段进行排序,应该怎么写sql语句? select * from test t order by cast(t.g
oracle多字段排序
在order by 后面加字段名称以及排序规则(ASC)
oracle 按照指定的查询条件对查询结果进行排序
在今天的工作中,碰到一个老问题,需要对每天的工作量进行简化,作为运维人员,每天写运维日志,非常繁琐,但是有些东西是必须记录的。那就找方法,把过程简化, 有这么一个需求,在系统找到的交易出错的帐号,需要查询出交易详单,然后写进每天的交易检测报告里。 根据相关条件查询出来的格式为: 时间       帐号                   帐号交易状态 然后sql根据
SQL小技巧,用多个条件进行排序
巧用order by之前在学习和实践中,我们用order by 语句基本是指用一个条件进行判断,然而今天我在写课程设计的时候遇到了这么一个情况现在后台需要返回一周7*12节课的数据,在表time中有84条相应的数据,字段date表示周一至周天,字段location表示这节课的位置。我按照从前到后的顺序,直接查询,返回。写安卓端的小伙伴从我这里获取了数据,之后他问我,能不能按第一节课,第二节课那样的顺
解决oracle语句中 含数字的字符串按数字排序问题
例如: 普通排序利用:order by 字段名 ASC 但是遇到有中文而且类型是varchar类型的结果就是这样 政采代(甲)字第0298号 政采代(甲)字第0421号 政采代(甲)字第1098号 政采代(甲)字第1267号(延续) 政采代(甲)字第1179号(延续) 但是我们要的结果应该是这样: 政采代(甲)字第0298号 政采代(甲)字第0421号 政采代(甲