数据库中字段值是这样的
A.1
A.10
A.11
A.12
A.13
A.14
A.15
A.2
A.20
A.21
A.22
A.23
A.3
A.30
A.31
A.4
A.5
A.6
A.7
A.8
A.9
如何按下面这种方式排序,就是拆分开,按后面的数字排序
A.1
A.2
A.3
A.4
A.5
A.6
A.7
A.8
A.9
A.10
A.11
A.12
A.13
A.14
A.15
A.20
A.21
A.22
A.23
A.30
A.31

解决方案 »

  1.   

    select * from tb order by substr(col,instr(col,'.')+1,length(col)-instr(col,'.')) 
      

  2.   

    select * from tt order by to_number(substr(trim(a),3,length(a)))
      

  3.   

    SQL> select * from emp order by (substr(job,2));--按照job的第二个字母排序     EMPNO ENAME      JOB              MGR HIREDATE          SAL       COMM     DEPTNO
    ---------- ---------- --------- ---------- ---------- ---------- ---------- ----------
          7499 ALLEN      SALESMAN        7698 20-2月 -81       1600        300         30
          7521 WARD       SALESMAN        7698 22-2月 -81       1250        500         30
          7654 MARTIN     SALESMAN        7698 28-9月 -81       1250       1400         30
          7844 TURNER     SALESMAN        7698 08-9月 -81       1500          0         30
          7566 JONES      MANAGER         7839 02-4月 -81       2975                    20
          7782 CLARK      MANAGER         7839 09-6月 -81       2450                    10
          7698 BLAKE      MANAGER         7839 01-5月 -81       2850                    30
          7369 SMITH      CLERK           7902 17-12月-80        800                    20
          7876 ADAMS      CLERK           7788 23-5月 -87       1100                    20
          7934 MILLER     CLERK           7782 23-1月 -82       1300                    10
          7900 JAMES      CLERK           7698 03-12月-81        950                    30
          7788 SCOTT      ANALYST         7566 19-4月 -87       3000                    20
          7902 FORD       ANALYST         7566 03-12月-81       3000                    20
          7839 KING       PRESIDENT            17-11月-81       5000                    10已选择14行。
      

  4.   

    create table t(col1 varchar(10));
    insert into t values('A.1');
    insert into t values('A.4');
    insert into t values('A.3');
    insert into t values('A.2');
    insert into t values('B.3');
    insert into t values('B.2');
    insert into t values('B.1');
    insert into t values('B.4');
    insert into t values('C.2');
    insert into t values('C.3');
    insert into t values('C.1');
    COMMIT;
    select * from t order by substr(col1,instr(col1,'.')-1,1) asc ,substr(col1,instr(col1,'.')+1,1) ;
    SQL> select * from t;
     
    COL1
    ----------
    A.1
    A.4
    A.3
    A.2
    B.3
    B.2
    B.1
    B.4
    C.2
    C.3
    C.1
     
    11 rows selected
    SQL> select * from t order by substr(col1,instr(col1,'.')-1,1) asc ,substr(col1,instr(col1,'.')+1,1) ;
     
    COL1
    ----------
    A.1
    A.2
    A.3
    A.4
    B.1
    B.2
    B.3
    B.4
    C.1
    C.2
    C.3
     
    11 rows selected