字段类型改用number,不要有非数字的内容.

解决方案 »

  1.   

    带order by的子句不能union比较郁闷,如果可以的话可以这样实现
    select busid from t_a where substr(busid,1,1)>'9' or substr(busid,1,1)<'0' order by busid
    select busid from t_a where substr(busid,1,1)>='0' and substr(busid,1,1)<='9' order by to_number(busid);
      

  2.   

    你的字母如果有规则就可以解决,如:首为字母K,可以用如下方法解决:
    select decode(substr(no1,1,4),'9999','k'||substr(no1,5),no1) as no from 
    (
       select decode(substr(no,1,1),'k','9999'||substr(no,2),no) no1  from testa order by to_number(no1)
    );
    SQL> select no from testa;NO
    ---
    111
    101
    102
    103
    104
    105
    107
    108
    109
    110
    11
    12
    13
    14
    15
    16
    1
    2
    3
    4NO
    ---
    k5
    k7
    k8
    k924 rows selectedSQL> 
    SQL> select decode(substr(no1,1,4),'9999','k'||substr(no1,5),no1) as no from
      2  (
      3     select decode(substr(no,1,1),'k','9999'||substr(no,2),no) no1  from testa order by to_number(no1) asc
      4  );NO
    ---
    1
    2
    3
    4
    11
    12
    13
    14
    15
    16
    101
    102
    103
    104
    105
    107
    108
    109
    110
    111NO
    ---
    k5
    k7
    k8
    k924 rows selected
      

  3.   

    select to_number(id) idd from a
     where trim(translate(id,'1234567890','      ')) is null
     order by idd
      

  4.   

    如果只有字母k出现的话
       select to_number((replace(cusidt,'k',''))) as bb from tr01 order by bb
      

  5.   

    如果只有字母k出现的话
       select busid  from a order by to_number((replace(cusid,'k','')))
      

  6.   

    order by lpad(busid,10);10 为你的数据栏位字段长度
      

  7.   

    我认为可以补充0 生成新的字段 用这个新的字段来排序
    oracle是允许这样做的哦
      

  8.   

    select emp2.*,lpad(备注,9,'0') sortid from emp2 order by sortid;姓名         备注         编码         职业         SORTID
    ------------ ------------ ------------ ------------ --------------
    yeqiufeng    1            3            作家         000000001
    秋枫软件     2            4                         000000002
    秋枫苦雪     100          1            程序员       000000100
    叶秋枫       200          2            厨师         000000200
    天玄软件     系统填写     5            软件公司     0系统填写
    ddy          系统填写     6            manager      0系统填写这是我的测试结果 还行吧
      

  9.   

    yeqiufeng(叶秋枫) 兄的建议最好。其实就是个右对齐再排序的问题。
      

  10.   

    楼上的正解,我也找到了一个正确的sql:
    select * from a order by length(id),id好了,揭帖了!