表SellRecord里存在一列ListNumber,数据为:
'13-1'
'13-3'
'13-2'
'13-15'
'13-12'
'13-8'select ListNumber
from SellRecord
order by convert(int,RIGHT(ListNumber,LEN(ListNumber)-CHARINDEX('-',ListNumber)))执行了此sql查询后,我认为应该按照'-'右边的数字排序,但事实并非如此,求原因

解决方案 »

  1.   


    if object_id('tb') is not null
       drop table tb
    go
    create table tb
    (
     listnumber varchar(10)
    )
    go
    insert into tb
    select '13-1'union all
    select '13-3'union all
    select '13-2'union all
    select '13-15'union all
    select '13-12'union all
    select '13-8'
    go
    select ListNumber
    from tb
    order by convert(int,RIGHT(ListNumber,LEN(ListNumber)-CHARINDEX('-',ListNumber)))
    /*
    ListNumber
    ----------
    13-1
    13-2
    13-3
    13-8
    13-12
    13-15(6 行受影响)
    */没错啊
      

  2.   

    order by cast(RIGHT(ListNumber,LEN(ListNumber)-CHARINDEX('-',ListNumber)) as int)
      

  3.   

    我晕。union all 和as int都没学过,只会convert,好吧 我先学了再说 不纠结这问题了