一个编码字段为字符型:其中有将近一万多条数据如下:
字段名  Num
        A0001
        A0002
        .
        .
        A9999
        A10000
        A10001执行查询语句按照Num排序,order by Num 
结果为
       A0001
       A0002
       。
       。
       A10000
       A10001
       A9999
编号为A9999的为最后一条数据,如何查询让A10001成为最后一条数据?也就是说按照数字的大小进行排序呢?

解决方案 »

  1.   


    严重同意。
    另外,可以考虑将字符串临时转换为数字进行排序,例如,对于SQL Server,可以
    select * from 
    (
    select 'A0001' as value
    union 
    select 'A0002' as value
    union
    select 'A100001' as value
    ) a
    order by
    convert(int,substring(value, 2, 100))
      

  2.   

    要注意列的数据类型,因为整形和字符形的排序方式不一样。
    整形为1,2,3,4,5,6,7,8,9,10,11
    字符形为1,10,11,2,3,4,5,6,7,8,9用CAST将数据库定义为字符型的F1字段,类型转换长整型,这样查询后就可以排序。
    strSelect = 'select CAST(F1 AS int) as F2 from TABLE1 order by F2'
    Access、SQLServer、Oracle常见SQL语句应用区别
    http://blog.csdn.net/guanking/archive/2010/05/08/5569629.aspx
      

  3.   

     select Num from TA where cast( right(len(Num )-1) as int) 
      

  4.   

    select Num from TA order by cast( right(len(Num )-1) as int)