有个表,字段d_id(自增字段主键), d_name, d_path
d_path存储的内容是:1,2,3,4这样的格式,现在想根据d_path这个字段排序,意思就是d_path用,分割后的数量大的排序在前,小的在后.

解决方案 »

  1.   

    不明白你的意思d_path 怎样分割,分割后怎么比较 ?
      

  2.   

    例如如果记录是这样的
    d_id d_name  d_path
    1     名称1  1,2,3
    2     名称2  1,2,3,4,8
    3     名称3  4,5,6,7希望得到
    d_id d_name  d_path
    2     名称2  1,2,3,4,8
    3     名称3  4,5,6,7
    1     名称1  1,2,3
    这样的排序.
      

  3.   

    d_path 怎样分割,分割后怎么比较 ?这个就是我不知道,不一定要分割,我的意思,只要能够按照d_path,","后的数量排序就可以了.
      

  4.   

    是按d_path“,”最后一个值的大小排序 ? 还是d_path中“,”的多少排序?
      

  5.   

    --这样?declare @a table
    (
    d_id int identity(1,1),
    d_name varchar(10),
    d_path varchar(20)
    )insert into @a
    select 'a','1,2,3,4,8' union all
    select 'b','1,2,3' union all
    select 'c','4,5,6,7'select * from @aselect *
    from @a
    order by (len(d_path)-len(replace(d_path,',',''))) desc/*d_id        d_name     d_path               
    ----------- ---------- -------------------- 
    1           a          1,2,3,4,8
    2           b          1,2,3
    3           c          4,5,6,7
    d_id        d_name     d_path               
    ----------- ---------- -------------------- 
    1           a          1,2,3,4,8
    3           c          4,5,6,7
    2           b          1,2,3
    */
      

  6.   

    谢谢大家回复,
    按照d_path中“,”的多少排序
      

  7.   

    好办法“order by (len(d_path)-len(replace(d_path,',',''))) desc”
      

  8.   

    LouisXIV(夜游神)
    牛.解决了,谢谢..
    给分..