declare @a varchar(20),@b varchar(20),@tmp int,@str varchar(100)
select @a = '1,3,5,7',@b = '4,5,6,7',@tmp=0,@str=''while @tmp<=1000
begin
      if charindex(','+convert(varchar,@tmp)+',',','+@a+','+@b+',')>0
        set @str=@str+','+convert(varchar,@tmp)
      set @tmp=@tmp+1       
endselect stuff(@str,1,1,'')--结果
/*
                        
----------------------------
1,3,4,5,6,7(所影响的行数为 1 行)
*/

解决方案 »

  1.   

    要是只对@a,@b排序我倒有办法,不过实际应用上,我这个办法估计有些笨。
    可以用ASCII()和SUBSTRING()函数把数字一个一个地截出来,然后对数字进行排序。
    排序完成后,再存到@c中就可以了。
      

  2.   

    declare @a varchar(20),@b varchar(20),@tmp int,@str varchar(100)
    select @a = '1,3,15,7',@b = '4,5,6,7',@tmp=0,@str=''select @tmp = charindex(',',@b)while (@tmp > 0 )
    begin
    select @str = left(@b,@tmp-1)
    select @b = stuff(@b,1,@tmp,'')
    select @tmp = charindex(',',@b)
    if charindex(','+@str+',',','+@a+',') <= 0 
    select @a = @a + ',' + @strend
    select @a
      

  3.   

    上面的有误declare @a varchar(20),@b varchar(20),@tmp int,@str varchar(100)
    select @a = '1,3,15,7',@b = '4,5,6,7',@tmp=0,@str=''select @tmp = charindex(',',@b)while (@tmp > 0 )
    begin
    select @str = left(@b,@tmp-1)
    select @b = stuff(@b,1,@tmp,'')
    select @tmp = charindex(',',@b)
    if charindex(','+@str+',',','+@a+',') <= 0 
    select @a = @a + ',' + @strendif charindex(','+@b+',',','+@a+',') <= 0 
    select @a = @a + ',' + @bselect @a
      

  4.   

    SQL语句可以写成这样,我真羡慕