Oracle 排序我现在有一个这样的问题:
比如我有数据如下:
10
1001
1002
1003
1004
20
2001
2002
2003
.....
我要排序成如下格式:
1001
1002
1003
1004
10
2001
2002
2003
20
...
请好心的各位大吓,帮帮我
在线等候在吓的回复。。
谢谢!

解决方案 »

  1.   

    SQL> with table1 as(
      2   select 10 id from dual union all
      3  select 1001 from dual union all
      4  select 1002 from dual union all
      5  select 1003 from dual union all
      6  select 1004 from dual union all
      7  select 20 from dual union all
      8  select 2001 from dual union all
      9  select 2002 from dual union all
     10  select 2003 from dual
     11  )
     12  select id from table1 order by substr(id,0,1),length(id) desc,substr(id,length(id),1);
     
            ID
    ----------
          1001
          1002
          1003
          1004
            10
          2001
          2002
          2003
            20
     
    9 rows selected
      

  2.   

    如果数据是要左对齐的话 加个to_char
      

  3.   

    08:27:46 sys@PRACTICE> with tb as(
    08:27:48   2  select 10 id from dual
    08:27:48   3  union all
    08:27:48   4  select 1001 from dual
    08:27:48   5  union all
    08:27:48   6  select 1002 from dual
    08:27:48   7  union all
    08:27:48   8  select 1003 from dual
    08:27:48   9  union all
    08:27:48  10  select 1004 from dual
    08:27:48  11  union all
    08:27:48  12  select 20 from dual
    08:27:48  13  union all
    08:27:48  14  select 2001 from dual
    08:27:48  15  union all
    08:27:48  16  select 2002 from dual
    08:27:48  17  union all
    08:27:48  18  select 2003 from dual
    08:27:48  19  )
    08:27:48  20  select to_char(id) ID from tb order by RPAD(id,4,'9');ID
    ----------------------------------------
    1001
    1002
    1003
    1004
    10
    2001
    2002
    2003
    20已选择9行。已用时间:  00: 00: 00.01