字段类型为VARCHAR2,数据为
文件〔2006〕13号
文件〔2006〕14号
文件〔2006〕10号
文件〔2006〕11号
想排序后为
文件〔2006〕10号
文件〔2006〕11号
文件〔2006〕13号
文件〔2006〕14号

解决方案 »

  1.   

    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号
      

  2.   

    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号
      

  3.   

    select * from table
    group by substr(f1,instr(f1,'(')+1,4),substr(f1,instr(f1,')+2)可能速度慢,可以做函數索引
      

  4.   

    你把cid,cname建成索引,几百条,呵呵  如果你的服务器够强 几百万都没事
      

  5.   

    看不出哪里不行,你实在不行自己加一列,自己写上排序用的数字,然后order by那烈完了
      

  6.   

    估计你要的应该是这个语句吧
     select test.title,test.id,to_number(substr(title,1,length(title)-2)) d from test order by d;
      

  7.   

    按楼上的方法操作提示“ORA-01722:无效数字”,
    给一个字符型字段排序,按字段值中有规律的数字排序,不能新加字段
      

  8.   

    select title,to_number(substr(title,4,4)||lpad(substr(title,9,length(title)-9),9,'0')) num from table_name order by num;
      

  9.   

    欢迎加入ORACLE学习交流群27257022
      

  10.   

    感谢楼上的回答
    表结构已经说的很清楚了,需要排序的字段是个字符型,
    字段类型为VARCHAR2,数据为
    文件〔2006〕13号
    文件〔2006〕14号
    文件〔2006〕10号
    文件〔2006〕11号
      

  11.   

    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行。
      

  12.   

    名称              是否为空? 类型 ID                          NUMBER(10)
     CHAKANQX                    CLOB
     FAWENRQ                     DATE
     FAWENBH                     VARCHAR2(50)   是对此字段排序的
     MIMIDJ                      VARCHAR2(50)
     FAWANGDW                    VARCHAR2(50)
     WENJIANBT                   VARCHAR2(200)
     FENSHUH                     VARCHAR2(50)
     HEGAO                       VARCHAR2(50)
     HUIGAO                      VARCHAR2(50)
     NIGAOREN                    VARCHAR2(50)
     NIGAORENBM                  VARCHAR2(150)
     QIFAREN                     VARCHAR2(50)
     GUIDANGJH                   VARCHAR2(50)
     CONTENT                     CLOB
     HONGTOU                     NUMBER(10)
      

  13.   

    SQL> desc test;
     名称                                      是否为空? 类型
     ----------------------------------------- -------- ---------------------------- ID                                                 NUMBER(10)
     CHAKANQX                                           CLOB
     FAWENRQ                                            DATE
     FAWENBH                                            VARCHAR2(50)
     MIMIDJ                                             VARCHAR2(50)
     FAWANGDW                                           VARCHAR2(50)
     WENJIANBT                                          VARCHAR2(200)
     FENSHUH                                            VARCHAR2(50)
     HEGAO                                              VARCHAR2(50)
     HUIGAO                                             VARCHAR2(50)
     NIGAOREN                                           VARCHAR2(50)
     NIGAORENBM                                         VARCHAR2(150)
     QIFAREN                                            VARCHAR2(50)
     GUIDANGJH                                          VARCHAR2(50)
     CONTENT                                            CLOB
     HONGTOU                                            NUMBER(10)SQL> select id,fawenbh from test;        ID FAWENBH
    ---------- --------------------------------------------------
             1 文件〔2006〕13号
             2 文件〔2006〕15号
             3 文件〔2006〕1001号
             4 文件〔2006〕2号
             5 文件〔2006〕134号
             6 文件〔2007〕99号
             7 文件〔2007〕18号
             8 文件〔2007〕1号已选择8行。SQL> select id,fawenbh,to_number(substr(fawenbh,4,4)||lpad(substr(fawenbh,9,leng
    th(fawenbh)-9),9,'0')) num from test order by num;        ID FAWENBH                                                   NUM
    ---------- -------------------------------------------------- ----------
             4 文件〔2006〕2号                                    2.0060E+12
             1 文件〔2006〕13号                                   2.0060E+12
             2 文件〔2006〕15号                                   2.0060E+12
             5 文件〔2006〕134号                                  2.0060E+12
             3 文件〔2006〕1001号                                 2.0060E+12
             8 文件〔2007〕1号                                    2.0070E+12
             7 文件〔2007〕18号                                   2.0070E+12
             6 文件〔2007〕99号                                   2.0070E+12已选择8行。
      

  14.   

    SQL> create table testa(f varchar2(100));Table createdSQL> insert into testa(f) values('文件〔2006〕2号');1 row insertedSQL> insert into testa(f) values('文件〔2006〕12号');1 row insertedSQL> insert into testa(f) values('文件头〔2006〕14号');1 row insertedSQL> insert into testa(f) values('党委文件〔2009〕32号');1 row insertedSQL> insert into testa(f) values('公司办文件〔2008〕4号');1 row insertedSQL> select * from testa;F
    --------------------------------------------------------------------------------
    文件〔2006〕2号
    文件〔2006〕12号
    文件头〔2006〕14号
    党委文件〔2009〕32号
    公司办文件〔2008〕4号SQL> select * from testa order by to_number(substr(f,instr(f,'〕')+length('〕'),instr(substr(f,instr(f,'〕')+length('〕')),'号')-1));F
    --------------------------------------------------------------------------------
    文件〔2006〕2号
    公司办文件〔2008〕4号
    文件〔2006〕12号
    文件头〔2006〕14号
    党委文件〔2009〕32号SQL>
      

  15.   

    sorry,没看清楚,最后的 语句应该是:SQL> select * from testa order by to_number(substr(f,instr(f,'〔')+length('〔'),instr(substr(f,instr(f,'〔')+length('〔')),'〕')-1)),to_number(substr(f,instr(f,'〕')+length('〕'),instr(substr(f,instr(f,'〕')+length('〕')),'号')-1));F
    --------------------------------------------------------------------------------
    文件〔2006〕2号
    文件〔2006〕12号
    文件头〔2006〕14号
    公司办文件〔2008〕4号
    党委文件〔2009〕32号SQL>
      

  16.   

    感谢大家的回答,问题已解决~~~~~~~~~
    使用了precipitant(塞北的雪)的,select * from testa order by to_number(substr(f,instr(f,'〔')+length('〔'),instr(substr(f,instr(f,'〔')+length('〔')),'〕')-1)),to_number(substr(f,instr(f,'〕')+length('〕'),instr(substr(f,instr(f,'〕')+length('〕')),'号')-1));