我表中的ID是这样的列---表名:test1-1-ache
1-2-ache
1-11-jjj
1-23-jjll1
1-3-ache
我想按前面的1-1来排序,排出的序列是
1-1-ache
1-2-ache
1-3-ache
1-11-jjj
1-23-jjll1应该怎样排?

解决方案 »

  1.   

    ----------------------------------------------------------------
    -- Author  :fredrickhu(小F,向高手学习)
    -- Date    :2011-10-12 15:20:35
    -- Version:
    --      Microsoft SQL Server 2008 R2 (RTM) - 10.50.1617.0 (Intel X86) 
    -- Apr 22 2011 11:57:00 
    -- Copyright (c) Microsoft Corporation
    -- Enterprise Evaluation Edition on Windows NT 6.1 <X64> (Build 7600: ) (WOW64)
    --
    ----------------------------------------------------------------
    --> 测试数据:[tb]
    if object_id('[tb]') is not null drop table [tb]
    go 
    create table [tb]([col] varchar(10))
    insert [tb]
    select '1-1-ache' union all
    select '1-2-ache' union all
    select '1-11-jjj' union all
    select '1-23-jjll1' union all
    select '1-3-ache'
    --------------开始查询--------------------------select * from [tb] order by PARSENAME(REPLACE(col,'-','.'),1),PARSENAME(REPLACE(col,'-','.'),2)
    ----------------结果----------------------------
    /* col
    ----------
    1-1-ache
    1-2-ache
    1-3-ache
    1-11-jjj
    1-23-jjll1(5 行受影响)
    */
      

  2.   

    select * from tb order by convert(int,left(col,charindex('-',col)-1)),
    convert(int,substring(col,charindex('-',col)+1,charindex('-',col,charindex('-',col)+1)-charindex('-',col)-1))
      

  3.   

    create table [tb]([col] varchar(10))
    insert [tb]
    select '1-1-ache' union all
    select '1-2-ache' union all
    select '1-11-jjj' union all
    select '1-23-jjll1' union all
    select '1-3-ache'
    go
    select * from tb order by convert(int,left(col,charindex('-',col)-1)),
    convert(int,substring(col,charindex('-',col)+1,charindex('-',col,charindex('-',col)+1)-charindex('-',col)-1))
    /*
    col
    ----------
    1-1-ache
    1-2-ache
    1-3-ache
    1-11-jjj
    1-23-jjll1(5 行受影响)*/
    go
    drop table tb
      

  4.   


    select * from tb
    order by 
    REPLACE(col,'#','')
    --//结果
    id          col
    ----------- ----------------------------------------------------------------------------------------------------
    2           1#11#
    53          1#11#4580#
    7           1#11#4580#4581#
    84          1#11#5175#
    54          1#11#5175#5238#
    8           1#11#5175#5238#5272#
    85          1#11#5175#5547#
    55          1#11#5175#5547#5565#
    9           1#11#5175#5547#5565#5566#
    10          1#11#5175#5547#5565#5572#
    56          1#11#5175#5547#5573#
    11          1#11#5175#5547#5573#5574#
    57          1#11#5175#5547#5600#
    12          1#11#5175#5547#5600#5601#
    13          1#11#5175#5547#5600#5607#
    3           1#17#
    87          1#17#5843#
    86          1#17#5843#5844#
    58          1#17#5843#5844#5868#
    14          1#17#5843#5844#5868#5869#
    59          1#17#5843#5914#
    15          1#17#5843#5914#5915#
    4           1#21#
    89          1#21#6871#
    62          1#21#6871#6925#
    18          1#21#6871#6925#6926#
    90          1#21#6930#
    64          1#21#6930#6931#
    63          1#21#6930#6931#6937#
    19          1#21#6930#6931#6937#6940#
    20          1#21#6930#6931#6973#
    91          1#21#6930#7065#
    65          1#21#6930#7065#7066#
    21          1#21#6930#7065#7066#7072#
    22          1#21#6930#7065#7066#7082#
    92          1#21#6930#7135#
    66          1#21#6930#7135#7136#
    23          1#21#6930#7135#7136#7137#
    93          1#21#7176#
    67          1#21#7176#7234#
    24          1#21#7176#7234#7237#
    69          1#21#7176#7320#
    68          1#21#7176#7320#7321#
    25          1#21#7176#7320#7321#7323#
    26          1#21#7176#7320#7328#
    70          1#21#7176#7320#7330#
    27          1#21#7176#7320#7330#7331#
    28          1#21#7176#7320#7345#
    72          1#21#7176#7346#
    71          1#21#7176#7346#7347#
    29          1#21#7176#7346#7347#7353#
    30          1#21#7176#7346#7366#
    31          1#21#7176#7346#7368#
    82          1#21#7370#
    94          1#21#7370#7371#
    73          1#21#7370#7371#7392#
    32          1#21#7370#7371#7392#7399#
    74          1#21#7370#7371#7403#
    33          1#21#7370#7371#7403#7404#
    34          1#21#7370#7371#7403#7405#
    75          1#21#7370#7412#
    35          1#21#7370#7412#7421#
    76          1#21#7370#7425#
    36          1#21#7370#7425#7429#
    78          1#21#7370#7430#
    77          1#21#7370#7430#7431#
    37          1#21#7370#7430#7431#7435#
    38          1#21#7370#7430#7431#7438#
    39          1#21#7370#7430#7431#7439#
    40          1#21#7370#7430#7456#
    41          1#21#7370#7430#7457#
    80          1#21#7370#7458#
    79          1#21#7370#7458#7470#
    42          1#21#7370#7458#7470#7472#
    43          1#21#7370#7458#7475#
    81          1#21#7370#7483#
    44          1#21#7370#7483#7485#
    45          1#21#7370#7487#
    97          1#3#
    1           1#4#
    99          1#40#
    5           1#44#
    95          1#45#
    83          1#45#8994#
    46          1#45#8994#8995#
    47          1#45#8994#8996#
    48          1#45#8994#8997#
    49          1#45#8994#8998#
    50          1#45#8994#8999#
    51          1#45#8994#9000#
    52          1#45#8994#9001#
    96          1#52#
    88          1#52#6428#
    60          1#52#6428#6433#
    16          1#52#6428#6433#6440#
    61          1#52#6428#6466#
    17          1#52#6428#6466#6483#
    6           1#59#
    98          1#70#
    100         2#60#
    101         2#64#(101 行受影响)
      

  5.   


    select * from tb
    order by 
    parsename(REPLACE(col,'-','.'),1),
    parsename(REPLACE(col,'-','.'),2)
      

  6.   

    这个不行吧,把1-1-ache改成1-1-bche 就不是这么排了