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

如何对这样的字段分析后排序?
我做系统的时候,有一个表,假设为test,里面有两个字段,因为数据格式特殊不知道怎样排序,请大侠指点。
字段   MemberScore                           HasConvert
            00|00|00                                 0
            02|12|24                                 25
            04|20|88                                 33    
说明:MemberScore里的格式的意思是会员的积分由3个固定的部分组成:字段里的数据是各个部分的分数用|隔开组合存储在字段里,HasConvert是已经兑换的分数,现在要求写个SQL将会员按照分数从高到低排列输出,不知道怎样写,请指点一二,谢谢!

------解决方案--------------------
--上为定位的取法.下为不定位的取法.

--创建测试数据
create table tb(MemberScore varchar(10),HasConvert int)
insert into tb values( '00|00|00 ',0)
insert into tb values( '02|12|24 ',25)
insert into tb values( '04|20|88 ',33)
select cast(left(MemberScore,charindex( '| ',MemberScore)-1) as int)+
cast(substring(MemberScore,charindex( '| ',MemberScore)+1 , charindex( '| ',MemberScore,charindex( '| ',MemberScore)+1) - charindex( '| ',MemberScore) - 1) as int)+
cast(reverse(left(reverse(MemberScore),charindex( '| ',reverse(MemberScore)) -1)) as int) -
HasConvert as 目前分数
from tb
order by 目前分数
drop table tb
--结果
/*
目前分数
-----------
0
13
79
(所影响的行数为 3 行)
*/