问一个排序语句
字段类型为VARCHAR2,数据为
文件〔2006〕13号
文件〔2006〕14号
文件〔2006〕10号
文件〔2006〕11号
想排序后为
文件〔2006〕10号
文件〔2006〕11号
文件〔2006〕13号
文件〔2006〕14号
------解决方案--------------------create table t2 (cid varchar2(100),cName varchar2(100))
insert into t2 values( '文件〔2006〕 ', '13号 ');
insert into t2 values( '文件〔2006〕 ', '14号 ');
insert into t2 values( '文件〔2006〕 ', '10号 ');
insert into t2 values( '文件〔2006〕 ', '11号 ');
select * from t2 order by cname
1 文件〔2006〕 10号
2 文件〔2006〕 11号
3 文件〔2006〕 13号
4 文件〔2006〕 14号
------解决方案--------------------create table t2 (cid varchar2(100),cName varchar2(100))
insert into t2 values( '文件〔2006〕 ', '13号 ');
insert into t2 values( '文件〔2006〕 ', '14号 ');
insert into t2 values( '文件〔2006〕 ', '10号 ');
insert into t2 values( '文件〔2006〕 ', '11号 ');
insert into t2 values( '文件〔2007〕 ', '11号 ');
insert into t2 values( '文件〔2007〕 ', '12号 ');
select * from t2 group by cid,cname order by cid,cname
1 文件〔2006〕 10号
2 文件〔2006〕 11号
3 文件〔2006〕 13号
4 文件〔2006〕 14号
5 文件〔2007〕 11号
6 文件〔2007〕 12号
------解决方案--------------------select * from table
group by substr(f1,instr(f1, '( ')+1,4),substr(f1,instr(f1, ')+2)
可能速度慢,可以做函數索引
------解决方案--------------------看不出哪里不行,你实在不行自己加一列,自己写上排序用的数字,然后order by那烈完了
------解决方案--------------------估计你要的应该是这个语句吧
select test.title,test.id,to_number(substr(title,1,length(title)-2)) d from test order by d;
------解决方案--------------------select title,to_number(substr(title,4,4)||lpad(substr(title,9,length(title)-9),9, '0 ')) num from table_name order by num;
------解决方案--------------------SQL> desc test
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
TITLE VARCHAR2(32)
SQL> select * from test;
TITLE
--------------------------------
文件〔2006〕13号
文件〔2006〕15号
文件〔2006〕1001号
文件〔2006〕2号
文件〔2006〕134号
文件〔2007〕99号
文件〔2007〕18号
文件〔2007〕1号
已选择8行。
SQL> select title,to_number(substr(title,4,4)||lpad(substr(title,9,length(title)
-9),9, '0 ')) num from test order by num;
TITLE NUM
-------------------------------- ----------
文件〔2006〕2号 2.0060E+12
文件〔2006〕13号 2.0060E+12
文件〔2006〕15号 2.0060E+12
文件〔2006〕134号 2.0060E+12
文件〔2006〕1001号 2.0060E+12
文件〔2007〕1号 2.0070E+12
文件〔2007〕18号 2.0070E+12
文件〔2007〕99号 2.0070E+12
已选择8行。
------解决方案--------------------SQL> desc test;
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
ID NUMBER(10)
CHAKANQX CLOB