按照STRING排序就行了。你放心吧。

解决方案 »

  1.   

    按照STRING排序,其实是按其中的每个字符的Ascii码来排的,所以直接就可以排出来,不用转换成值型。
      

  2.   

    不对阿
    string的话10肯定在9前面
    不信你试一下
      

  3.   

    可以将字符串处理一下,既然你想排序,就不应该规划成这样,建议: 严格格式为:
    C.0001.0001
    C.0001.0002
    ......
    C.0002.0001
    ......
    C.9999.9999
    这下排序就很容易了
    ORDER BY 一下就可以了,意下如何?
      

  4.   

    c_unknower,你究竟想怎样排?你的排序要求实在写得太烂,
    后面的例子更是莫名其妙。
    先说明:你是不是想按照每段的数字大小来排序?
    比如应该排成:
    C.1
    C.5.7
    C.5.10
    C.10.1
    再看看你自己写的是这个意思么?
    不说别的,就用我举的四个数做例子,你是不是想这样排?
      

  5.   

    guaguagua(呱呱)
    对其实就是树型排序阿
    但因为有了"."
    使原来简单的问题复杂了
      

  6.   

    解决的办法就是,自己写一个函数,用它来格式化你的树型结构字符串。
    只要如LANDEHUTU所说,把点格式化到固定的位置上,就可以排序了。如果你懒得写,加点分我帮你写一个。
    先说好,我可只会SQL SERVER。
      

  7.   

    junglerover(灌木丛)
    如果你写的能够实现功能
    加分没有问题
    呵呵sql server
      

  8.   

    以下是实现转换用的函数代码,在SQL SERVER 2000中通过:CREATE FUNCTION F_FORMATTREE (@TreeStr as varchar(80))  
    RETURNS varchar(100) AS  
    BEGIN 
    declare @i int;
    declare @Pos1 int;
    declare @Pos2 int;
    declare @tStr varchar(4);
    declare @tResultStr varchar(100);
    declare @tChar as varchar(1); set @i=1;
    set @tResultStr='';
    while @i<=len(@TreeStr)
    begin
    set @Pos1=@i;
    while @i<=len(@TreeStr)
    begin
    set @tChar=substring(@TreeStr,@i,1);
    if (@tChar='.')  break;
    set @i=@i+1;
    end
    set @Pos2=@i;
    set @tStr=substring(@TreeStr,@Pos1,@Pos2-@Pos1);
    set @tStr=left('000000',4-len(@tStr))+@tStr;
    set @tResultStr=@tResultStr+@tStr;
    set @i=@i+1;
    end return @tResultStr;
    END创建此函数后,使用
    select dbo.F_FORMATTREE ('C.1.2')
    返回000C00010002,问题已经解决。
    你用
    select * from TABLE order by dbo.F_FORMATTREE (code)
    就可以了。注意只能在SQL SERVER 2000中使用。
      

  9.   

    老兄,看看我和yangzhaoyu差多少分,帮我补齐如何?