日期:2014-05-18 浏览次数:20654 次
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