日期:2014-05-18 浏览次数:20779 次
60米 60米 60米 800米 800米 800米 5000米 跳高
order by (case when charindex('米',itemName)>0 then 0 else 1 end),
(case when charindex('米',itemName)>0 then convert(int,left(itemName,charindex('米',itemName)-1)) end)
------解决方案--------------------
把Order By ItemName改成如下:
Order by case When IsNumeric(replace(itemName ,'米',''))=1 then Cast(replace(itemName ,'米','') as int) else 2147483647 End
------解决方案--------------------
create table tb(name nvarchar(32))
go
insert tb select '50米' union select '60米'
union select '500米' union select '600米'
union select '10米' union select '350米'
union select '跳高'
select * from tb
/*
name
50米
60米
500米
600米
10米
350米
跳高
*/
select * from tb order by case when CHARINDEX('米',name)>0 then cast(left(name,CHARINDEX('米',name)-1)as int) else 999999999 end
/*
name
10米
50米
60米
350米
500米
600米
跳高
*/
drop table tb