日期:2014-05-18  浏览次数:20654 次

关于字符串排序的问题请教,谢谢。


如上图

我已经ORDER BY itemName 了
但是结果显示的确是图上所示,
如果我要显示成
SQL code
60米
60米
60米
800米
800米
800米
5000米
跳高



请问这个该怎么做呢,谢谢~

------解决方案--------------------
SQL code

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
------解决方案--------------------
SQL code

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