Select  *  from (
select '1.2' as prodsize union select '1.4' as prodsize union select '1.5' as prodsize union
 select '1.6' as prodsize union select '1.8' as prodsize union select '1.9' as prodsize union
 select '2.0' as prodsize union select '2.2' as prodsize union select '2.5' as prodsize union
 select '2.8' as prodsize union select '3.5' as prodsize union select '14.1' as prodsize union
 select '17' as prodsize )  a order by cast(prodsize  as decimal(9,2))

解决方案 »

  1.   

    select 1.2 as prodsize
    union select 1.4
    union select 1.5
    union select 1.6
    ......
    union select 17
      

  2.   


    就是你把你的prodsize字段转换为数字类型就可以了
    有俩个函数convert () 和cast()order by convert(float ,prodsize)
    order by cast(prodsize  as float)
      

  3.   

    create table ta(id int identity(1,1),prodsize  numeric(12,2))
    insert into ta(prodsize)
    select '1.2' as prodsize union select '1.4' as prodsize union select '1.5' as prodsize union
     select '1.6' as prodsize union select '1.8' as prodsize union select '1.9' as prodsize union
     select '2.0' as prodsize union select '2.2' as prodsize union select '2.5' as prodsize union
     select '2.8' as prodsize union select '3.5' as prodsize union select '14.1' as prodsize union
     select '17' as prodsize--按數字排序
    select * from ta order by prodsize--按字符串排序
    select * from ta order by cast(prodsize as varchar)