直接用ORDER BY时,应该是逐字符比较,10的首字符1<2所以如此,我当初没仔细看清你的要求。我会再想想的,对了,昨天bobo的那个方法有问题么?

解决方案 »

  1.   

    SELECT id,Name
    FROM  tab_name
    ORDER BY decode(Upper(substr(id,1,1)),'A',id,chr(id));
      

  2.   

    可以左填充0
    SELECT id,Name
    FROM  tab_name
    ORDER BY LPAD(id,'0',10)
      

  3.   

    create table tabname(a varchar2(10),b varchar2(10));
    select * from tabname order by lpad(a,2)
      

  4.   

    SQL> select * from aa order by name;NAME
    ----------
    1
    10
    2
    a
    a1
    a26 rows selected解决方法:
    SQL> select * from aa order by decode(trim(translate(name,'0123456789',' ')),null,to_number(name));NAME
    ----------
    1
    2
    10
    a
    a1
    a26 rows selected
      

  5.   

    请问楼上的是在什么环境下测试成功的,我有ORACLE 7.34上不能用。