如下:DECLARE @S VARCHAR(2000)
SET @S='HERJFDWVVHISG,HERJJSWVVHIHC,HERIEGWVVHHCB,HERIVRWVVHGIS'输出格式: HERIVRWVVHGIS,HERIEGWVVHHCB,HERJJSWVVHIHC,HERJFDWVVHISG

解决方案 »

  1.   

    select REVERSE('HERJFDWVVHISG,HERJJSWVVHIHC,HERIEGWVVHHCB,HERIVRWVVHGIS')-------------------------------------------------------
    SIGHVVWRVIREH,BCHHVVWGEIREH,CHIHVVWSJJREH,GSIHVVWDFJREH(1 row(s) affected)
      

  2.   


    select REVERSE('HERJFDWVVHISG,HERJJSWVVHIHC,HERIEGWVVHHCB,HERIVRWVVHGIS') ------------------------------------------------------- 
    SIGHVVWRVIREH,BCHHVVWGEIREH,CHIHVVWSJJREH,GSIHVVWDFJREH
    -----------------------------------------------------------
    汗,这哪儿对哦...
      

  3.   


    select reverse('字符串')
      

  4.   

    没看清题目,上面有问题。
    不过楼主可以参考上面的函数,将,分开的部分作为一个整体用Replace取代掉就行了
      

  5.   

    LZ每个单词的开头都是HER么?
    还是里面是不规律的?
      

  6.   

    create function f_str(@instr varchar(2000))
    returns varchar(2000)
    as
    begin
        declare @ret varchar(1000)
        select @ret='',@instr=','+@instr
        
        while charindex(',',@instr)>0
        begin
            select @ret  =@ret+reverse(left(reverse(@instr),charindex(',',reverse(@instr)))),
                   @instr=left(@instr,len(@instr)-charindex(',',reverse(@instr)))
        end
        set @ret=stuff(@ret,1,1,'')
        return @ret
    end
    goDECLARE @S VARCHAR(2000) 
    SET @S='HERJFDWVVHISG,HERJJSWVVHIHC,HERIEGWVVHHCB,HERIVRWVVHGIS' 
    select dbo.f_str(@S)/*
    -------------------------------------------------------
    HERIVRWVVHGIS,HERIEGWVVHHCB,HERJJSWVVHIHC,HERJFDWVVHISG
    */
    godrop function f_str
    go
      

  7.   

    如果每个字符串的","不超过3个,而且字符串中不包含".",可以变通一下:DECLARE @S VARCHAR(2000) 
    SET @S='HERJFDWVVHISG,HERJJSWVVHIHC,HERIEGWVVHHCB,HERIVRWVVHGIS' SELECT  
        (CASE WHEN PARSENAME(t.COL,1) IS NULL THEN '' else     PARSENAME(t.COL,1) END) +
        (CASE WHEN PARSENAME(t.COL,2) IS NULL THEN '' else ','+PARSENAME(t.COL,2) END) +
        (CASE WHEN PARSENAME(t.COL,3) IS NULL THEN '' else ','+PARSENAME(t.COL,3) END) +
        (CASE WHEN PARSENAME(t.COL,4) IS NULL THEN '' else ','+PARSENAME(t.COL,4) END)
    FROM
        (SELECT REPLACE(@s,',','.') AS COL) t/*
    -------------------------------------------------------
    HERIVRWVVHGIS,HERIEGWVVHHCB,HERJJSWVVHIHC,HERJFDWVVHISG
    */
      

  8.   

    DECLARE @S VARCHAR(2000),@A VARCHAR(100),@B VARCHAR(100),@C VARCHAR(100),@D VARCHAR(100)
    SET @A='HERJFDWVVHISG'
    SET @B='HERJJSWVVHIHC'
    SET @C='HERIEGWVVHHCB'
    SET @D='HERIVRWVVHGIS'SET @S='A,B,C,D'
    select REPLACE(REPLACE(REPLACE(REPLACE(REVERSE('A,B,C,D'),'A',@A),'B',@B),'C',@C),'D',@D)/*
    结果:
    -------------------------------------------------------------------------------
    HERIVRWVVHGIS,HERIEGWVVHHCB,HERJJSWVVHIHHERIEGWVVHHCB,HERJFHERIVRWVVHGISWVVHISG(1 row(s) affected)
    */
      

  9.   

    PARSENAME ( 'object_name' , object_piece ) 
    object_piece要返回的对象部分。object_piece 的数据类型为 int 值,可以为下列值。
    1 = 对象名称2 = 架构名称3 = 数据库名称4 = 服务器名称
      

  10.   

    DECLARE @S VARCHAR(2000) ,@wz int ,@new varchar(2000),@str varchar(2000)
    SET @S='HERJFDWVVHISG,HERJJSWVVHIHC,HERIEGWVVHHCB,HERIVRWVVHGIS'+','
    select @wz=1,@str=''
    while CHARINDEX(',',@s)>0
    begin
    select @str=substring(@s,@wz,CHARINDEX(',',@s)-1)
    set @s=stuff(@s,@wz,CHARINDEX(',',@s),'')
    select @new=@str+isnull(','+@new,'')
    end
    select @new
      

  11.   

    看我的:
    DECLARE @S VARCHAR(2000) 
    SET @S='HERJFDWVVHISG,HERJJSWVVHIHC,HERIEGWVVHHCB,HERIVRWVVHGIS' SET @S='HERIVRWVVHGIS,HERIEGWVVHHCB,HERJJSWVVHIHC,HERJFDWVVHISG'
    :)又不說明規律,受不了這樣的問題
      

  12.   

    DECLARE @S VARCHAR(2000) 
    SET @S='HERJFDWVVHISG,HERJJSWVVHIHC,HERIEGWVVHHCB,HERIVRWVVHGIS' 
    declare @integers table(i int identity, n bit)
    insert @integers(n)
    select top 2000 0 from sysobjectsdeclare @split char(1), @s1 varchar(2000)
    set @split = ','
    set @s1 = ''select i, ltrim(rtrim(substring(@s, i, charindex(@split, @s + @split, i) - i))) as s
    into # from @integers
    where i <= len(@s + @split) and charindex(@split, @split + @s, i) = i
    order by i descupdate # set @s1 = case @s1 when '' then s else @s1 + ',' + s end, s = @s1
    select max(s) from #
    /*
    HERIVRWVVHGIS,HERIEGWVVHHCB,HERJJSWVVHIHC,HERJFDWVVHISG
    */
      

  13.   

    用VS创建存储过程吧 用string.Split()方法分解再合并
      

  14.   

    LZ, 终于找到一个不用循环的方法, 而且只要遵循此规律(13个一段)多少个都行-- LZ的源句
    DECLARE @S VARCHAR(2000) 
    SET @S='HERJFDWVVHISG,HERJJSWVVHIHC,HERIEGWVVHHCB,HERIVRWVVHGIS' 
    -- 新增
    declare @cStr varchar(200)
    declare @nT1 int
    declare @nT2 int
    set @cStr = ''
    set @nT1 = len(@S)%13 + 1
    set @nT2 = @nT1select @cStr = @cStr + substring(@S, (@nT2-1)*13+@nT2, 13) + ',', @nT2 = @nT2-1 
    from master..spt_values 
    where Name is null and 
    Number < @nT1
    select substring(@cStr, 1, len(@cStr)-1)
    -- 输出结果
    HERIVRWVVHGIS,HERIEGWVVHHCB,HERJJSWVVHIHC,HERJFDWVVHISG(所影响的行数为 1 行)-- 多一项试试@S='HERJFDWVVHISG,HERJJSWVVHIHC,HERIEGWVVHHCB,HERIVRWVVHGIS,HERIVRWTOMZZU' 
    -- 输出结果为
    HERIVRWTOMZZU,HERIVRWVVHGIS,HERIEGWVVHHCB,HERJJSWVVHIHC,HERJFDWVVHISG(所影响的行数为 1 行)
      

  15.   

    这样可以不
    DECLARE @S VARCHAR(2000) 
    SET @S='HERJFDWVVHISG,HERJJSWVVHIHC,HERIEGWVVHHCB,HERIVRWVVHGIS' 
    declare @tt table(id int identity(1,1),col varchar(100))
    while @S>''
      begin
        insert @tt 
        select LEFT(@S,CHARINDEX(',',@s+',')-1)
        set @S=STUFF(@S,1,CHARINDEX(',',@s+','),'')
      end
      
      declare @a varchar(8000)
      set @a=''
      SELECT @a=@a+','+col FROM @TT order by id desc
      
      print stuff(@a,1,1,'')如果有规律的话用 parsename
      

  16.   

    不用循环,就用嵌套
    void reserve_printf(const char* psz)
    {
       if (!(*psz)) 
           return;
       reserve_printf(psz+1);
       putchar(*psz);
    }
      

  17.   

    先用循环,按好逗号把字符串分割,然后用sql的reverse函数处理每个小节。再合并起来就可以了吧。
      

  18.   

    LZ,用WITH,SQL SERVER 2005里的WITH子句功能还是很强大的。
      

  19.   

    declare @str varchar(100)
    set @str='AB,AC,FED,GH'declare @re_str varchar(100)select @re_str= isnull(@re_str,'')+','+[str]
    from
    (
    SELECT top 100 percent
        SUBSTRING(@str,B.number,CHARINDEX(',',@str+',',B.number)-B.number) AS [str],
        number
     from  master.dbo.spt_values AS B
    where  B.type='p' AND B.number BETWEEN 1 AND LEN(@str)
                AND SUBSTRING(','+@str,B.number,1)=','
     order by number desc
    ) Aselect @re_str=stuff(@re_str,1,1,'')
    print @re_str