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

排序问题.以下数据如何实现排序.
我有一字段.值为
a-b0-1-c
b-c10-20-b
a-c12-5-c
a-c1-4-b

我想按第二个   "- "与第三个 "- "之间的数值为排序列.
结果要为:
a-b0-1-c
a-c1-4-b
a-c12-5-c
b-c10-20-b
相当于为   1,4,5,20   排序,望高手帮助.

------解决方案--------------------
declare @a table(a varchar(20))
insert @a select 'a-b0-1-c '
union all select 'b-c10-20-b '
union all select 'a-c12-5-c '
union all select 'a-c1-4-b '

select *
from @a
order by
cast(
substring(a,
charindex( '- ',a,patindex( '%-% ',a)+1)+1,
charindex( '- ',a,charindex( '- ',a,patindex( '%-% ',a)+1)+1)-charindex( '- ',a,patindex( '%-% ',a)+1)-1)
as
int
)
--result
/*
a
--------------------
a-b0-1-c
a-c1-4-b
a-c12-5-c
b-c10-20-b

(所影响的行数为 4 行)
*/