declare @fieldlist varchar(100),
        @valuelist varchar(100),
        @field1 varchar(10),
        @value1 varchar(10),
        @sqlstr varchar(300)  select @fieldlist='aa,bb,cc,dd'
 select @valuelist='11,22,33,44'
 select @sqlstr = ''
 while (charindex(',',@fieldlist)>0  and charindex(',',@valuelist)>0)
 begin
   select @field1 = substring(@fieldlist,1,charindex(',',@fieldlist)-1)
   select @value1 = substring(@valuelist,1,charindex(',',@valuelist)-1)
   select @sqlstr = @sqlstr + @field1+'='+@valuelist+','
   select @fieldlist = substring(@fieldlist,charindex(',',@fieldlist)+1,len(@fieldlist))
   select @valuelist = substring(@valuelist,charindex(',',@valuelist)+1,len(@valuelist))
 end 
 select @sqlstr = @sqlstr + @fieldlist + '='+ @valuelist

解决方案 »

  1.   

    declare @aa1 varchar(100),@bb1 int,@cc1 int
    declare @aa2 varchar(100),@bb2 int,@cc2 int
    declare @result varchar(2000)set @aa1='aaaa,bb,ca,s,a'
    set @aa2='11,22,33,44,45'
    set @bb1=0
    set @bb2=0set @cc1=charindex(',',@aa1)
    set @cc2=charindex(',',@aa2)set  result=substring(@aa1,@bb1,@cc1-@bb1)+'='+substring(@aa2,@bb2,@cc2-@bb2)
    while @cc1>0
    begin
      set @bb1=@cc1+1
      set @bb2=@cc2+1
      set @cc1=charindex(',',@aa1,@bb1)
      set @cc2=charindex(',',@aa2,@bb2)
      set result=result+','+substring(@aa1,@bb1,case when @cc1>0 then @cc1-@bb1 else len(@aa1) end)+'='+substring(@aa2,@bb2,case when @cc2>0 then @cc2-@bb2 else len(@aa2) end)
    endselect @result
      

  2.   

    declare @fieldlist varchar(100),
            @valuelist varchar(100),
            @field1 varchar(10),
            @value1 varchar(10),
            @sqlstr varchar(300)  select @fieldlist='aa,bb,cc,dd'
     select @valuelist='11,22,33,44'
     select @sqlstr = ''
     while (charindex(',',@fieldlist)>0  and charindex(',',@valuelist)>0)
     begin
       select @field1 = substring(@fieldlist,1,charindex(',',@fieldlist)-1)
       select @value1 = substring(@valuelist,1,charindex(',',@valuelist)-1)
       select @sqlstr = @sqlstr + @field1+'='+@value1+','
       select @fieldlist = substring(@fieldlist,charindex(',',@fieldlist)+1,len(@fieldlist))
       select @valuelist = substring(@valuelist,charindex(',',@valuelist)+1,len(@valuelist))
     end 
     select @sqlstr = @sqlstr + @fieldlist + '='+ @valuelist
      

  3.   

    更正:
    declare @aa1 varchar(100),@bb1 int,@cc1 int
    declare @aa2 varchar(100),@bb2 int,@cc2 int
    declare @result varchar(2000)set @aa1='aaaa,bb,ca,s,a'
    set @aa2='11,22,33,44,45'
    set @bb1=0
    set @bb2=0set @cc1=charindex(',',@aa1)
    set @cc2=charindex(',',@aa2)set  @result=substring(@aa1,@bb1,@cc1-@bb1)+'='+substring(@aa2,@bb2,@cc2-@bb2)
    while @cc1>0
    begin
      set @bb1=@cc1+1
      set @bb2=@cc2+1
      set @cc1=charindex(',',@aa1,@bb1)
      set @cc2=charindex(',',@aa2,@bb2)
      set @result=result+','+substring(@aa1,@bb1,case when @cc1>0 then @cc1-@bb1 else len(@aa1) end)+'='+substring(@aa2,@bb2,case when @cc2>0 then @cc2-@bb2 else len(@aa2) end)
    endselect @result
      

  4.   

    哈。。谢谢各位了。刚才在等待各位的答复的时候我自己也在翻书做,结果我所使用的方法与genphone_ru(票票)的一样,从pengdali(大力)的方法中我才知道原来charindex函数是有第三个参数的(我看的书上没有讲到)。
        他妈的,我买的那本铁道出版社出的《SQL SEREVER 2000 彻底研究》简直就是烂书中的典型,连right函数的作用都写错了,说什么作用是:“取字符串的第int_expr+1个起到字符串的最后一个字符的子字符串。”
        哈。。还是看帮助文件保险啊!
        问题解决,给分
      

  5.   

    我的最后方法:
    declare @aa1 varchar(100),@bb1 int,@cc1 int
    declare @aa2 varchar(100),@bb2 int,@cc2 int
    declare @result varchar(2000)set @aa1='aaaa,bb,ca,s,a,'
    set @aa2='11,22,33,44,45,'
    set @bb1=0
    set @bb2=0
    set @result=''while charindex(',',@aa1,@bb1)>0
    begin
      set @cc1=charindex(',',@aa1,@bb1)
      set @cc2=charindex(',',@aa2,@bb2)
      set @result=@result+substring(@aa1,@bb1,@cc1-@bb1)+'='+substring(@aa2,@bb2,@cc2-@bb2)+','
      set @bb1=@cc1+1
      set @bb2=@cc2+1
    end
    set @result=left(@result,len(@result)-1)
    print @result