一个排序规则的有关问题,

一个排序规则的问题,急,急!!!题目如下:编号序号是否图号14291出图AWwpf.11.114301出图AWwpf.11.1-1143612

一个排序规则的问题,急,急!!!
题目如下:
编号         序号         是否               图号
14291出图AWwpf.11.1
14301出图AWwpf.11.1-1
143612出图AWwpf.11.1-12
14312出图AWwpf.11.1-2
14323出图AWwpf.11.1-3
14335出图AWwpf.11.1-5
14346出图AWwpf.11.1-6
14359出图AWwpf.11.1-9
14372出图AWwpf.11.2
14383出图AWwpf.11.2-3
14459出图AWwpf.11-10
144610出图AWwpf.11-11
144711出图AWwpf.11-12
144913出图AWwpf.11-14
145014出图AWwpf.11-15
145115出图AWwpf.11-16
14404出图AWwpf.11-4
14426出图AWwpf.11-6
14437出图AWwpf.11-7
14448出图AWwpf.11-8

SQl=select   *   from   T1   order   by   图号
这是按照图号排序的结果,现在要求实现按编号排序的结果   也就是下图

14291出图AWwpf.11.1
14301出图AWwpf.11.1-1
14312出图AWwpf.11.1-2
14323出图AWwpf.11.1-3
14335出图AWwpf.11.1-5
14346出图AWwpf.11.1-6
14359出图AWwpf.11.1-9
143612出图AWwpf.11.1-12
14372出图AWwpf.11.2
14383出图AWwpf.11.2-3
14404出图AWwpf.11-4
14426出图AWwpf.11-6
14437出图AWwpf.11-7
14448出图AWwpf.11-8
14459出图AWwpf.11-10
144610出图AWwpf.11-11
144711出图AWwpf.11-12
144913出图AWwpf.11-14
145014出图AWwpf.11-15
145115出图AWwpf.11-16

SQl=select   *   from   T1   order   by   序号

在本表中   AWwpf.11   是一个参数   ,且参数长度不固定,有什么样的方法能
够实现一个通用的排序规则?排序规则要求   优先考虑   "   . "     后考虑   "- "



[解决办法]
先按第一列,如果重复按第二列,依次类推!不知道你是怎么样存储的?
[解决办法]
好像你理解的次序不对


declare @t table(
图号 varchar(20)
)
insert @t select
'AWwpf.11.1 '
union all select
'AWwpf.11.1-1 '
union all select
'AWwpf.11.1-12 '
union all select
'AWwpf.11.1-2 '
union all select
'AWwpf.11.1-3 '
union all select
'AWwpf.11.1-5 '
union all select
'AWwpf.11.1-6 '
union all select
'AWwpf.11.1-9 '
union all select
'AWwpf.11.2 '
union all select
'AWwpf.11.2-3 '
union all select
'AWwpf.11-10 '
union all select
'AWwpf.11-11 '
union all select
'AWwpf.11-12 '
union all select
'AWwpf.11-14 '
union all select
'AWwpf.11-15 '
union all select
'AWwpf.11-16 '
union all select
'AWwpf.11-4 '
union all select
'AWwpf.11-6 '
union all select
'AWwpf.11-7 '
union all select
'AWwpf.11-8 '

select *
from @t
order by
case when charindex( '- ',图号)> 0 then REVERSE(stuff(REVERSE(图号),1,charINDEX( '- ',REVERSE(图号)), ' ')) else 图号 end,
case when charindex( '- ',图号)> 0 then cast(REVERSE(left(REVERSE(图号),charINDEX( '- ',REVERSE(图号))-1)) as int) else 0 end

--结果
图号
--------------------
AWwpf.11-4
AWwpf.11-6
AWwpf.11-7
AWwpf.11-8
AWwpf.11-10
AWwpf.11-11
AWwpf.11-12
AWwpf.11-14
AWwpf.11-15
AWwpf.11-16
AWwpf.11.1
AWwpf.11.1-1
AWwpf.11.1-2
AWwpf.11.1-3
AWwpf.11.1-5
AWwpf.11.1-6
AWwpf.11.1-9
AWwpf.11.1-12
AWwpf.11.2
AWwpf.11.2-3

(所影响的行数为 20 行)



---我觉得这个次序是对的