解决方案 »

  1.   


    DECLARE @S NVARCHAR(30)
    SET @S='A B C D E F';with t as
    (select (row_number() over(order by getdate())+1)/2 'rn',
            substring(a.s,b.number,charindex(' ',a.s+' ',b.number)-b.number) 's'
      from (select @S 's') a,master..spt_values b
      where b.[type]='P' and b.number between 1 and len(a.s)
      and substring(' '+a.s,b.number,1)=' ')
    select rtrim(a.rn)
           +'='''
           +stuff((select ' '+b.s
                   from t b
                   where b.rn=a.rn
                   for xml path('')),1,1,'')
           +''' '  's'
     from t a
     group by a.rn/*
    s
    ---------------------------
    1='A B' 
    2='C D' 
    3='E F' (3 行受影响)
    */
      

  2.   

    先用patindex 找出字母出现的位置。然后用SUBSTRING 或者left/right 进行截出字符串。declare @sql varchar(100)='^%^&&*%^%abcd',@index int ,
    @n varchar(20),@n1 varchar(20)
    set @index=PATINDEX('%[a-z]%',@sql)
    set @n=substring (@sql,1,@index-1)
    set @n1=RIGHT(@sql,len(@sql)-@index+1)
    select @n,@n1,LEN(@n),LEN(@n1)
      

  3.   

    DECLARE @S NVARCHAR(30)
    SET @S='A B C D E F G H I B K D I'SELECT @S = REPLACE(@S,' ','')
    SELECT CAST(ROW_NUMBER()OVER(ORDER BY (SELECT 1))AS VARCHAR(10))+'='+SUBSTRING(STR1,number,2) FROM (SELECT @S STR1) A,master..spt_values B
    WHERE B.TYPE='P' AND number>0 AND number<=LEN(@S) AND number%2<>0