假设现在有三个变量 @stringvalue @prefix @suffix
现在
@stringvalue=' leave %leave_Code% %staff_No% ABC'
要求处理后的效果
'''leave'' + @leave_code + @staff_no + ''ABC'''也就是说 变量不带百分号的,前后加上引号,带百分号的百分号去掉,变量加前缀@ ,变量个数不确定,求思路,或者直接给代码也行,谢谢了
现在
@stringvalue=' leave %leave_Code% %staff_No% ABC'
要求处理后的效果
'''leave'' + @leave_code + @staff_no + ''ABC'''也就是说 变量不带百分号的,前后加上引号,带百分号的百分号去掉,变量加前缀@ ,变量个数不确定,求思路,或者直接给代码也行,谢谢了
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 行受影响)先拆行,替换,再合并