假设现在有三个变量  @stringvalue  @prefix  @suffix  
现在  
@stringvalue=' leave  %leave_Code% %staff_No%  ABC'
要求处理后的效果
'''leave'' +  @leave_code + @staff_no + ''ABC'''也就是说 变量不带百分号的,前后加上引号,带百分号的百分号去掉,变量加前缀@ ,变量个数不确定,求思路,或者直接给代码也行,谢谢了

解决方案 »

  1.   


    declare @stringvalue varchar(100)
    declare @xml xml
    set @stringvalue=' leave  %leave_Code% %staff_No%  ABC'
    select @xml='<n>'+replace(ltrim(replace(@stringvalue,'  ',' ')),' ','</n><n>')+'</n>'
    ;with cte as
    (
    select c=case when charindex('%',c1.value('.','varchar(30)'))>0 then '@'+replace(c1.value('.','varchar(30)'),'%','') else ''''''+c1.value('.','varchar(30)')+'''''' end from @xml.nodes('/n') as t(c1)
    )
    select ''''+stuff((select '+'+c from cte for xml path('')),1,1,'')+''''
    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    '''leave''+@leave_Code+@staff_No+''ABC'''(1 行受影响)先拆行,替换,再合并