排序问题.以下数据如何实现排序.
我有一字段.值为
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 行)
*/