max79 |
---|
Задача: Создать функцию, где в приходящей строке (MessageBody) типа 'Dear <%FirstName%> <%LastName%> go to <%Email%>' заменить теги на информацию о пользователе из таблицы users с данным ID. Тэги представляют собой имена полей ( естественно в приходящей строке могут быть разные ) |
create table t (FirstName varchar(20), LastName varchar(20), Email varchar(20), SomeShit1 varchar(20))
insert into t values ('Gates', 'Billy', 'billy@microsoft.com', 'xz')
-- =============================================
create FUNCTION [dbo].HabaHaba
(@str varchar(max))
RETURNS varchar(max)
AS
BEGIN
declare @xml xml
set @xml = (select * from t for xml raw, elements)
--
select @str=replace(@str, '<%'+a.xz1+'%>', a.xz2)
from
(select
t.c.value('local-name(.)', 'varchar(20)') as xz1
,t.c.value('./text()[1]', 'varchar(20)') as xz2
from @xml.nodes('/row/*') as t(c)) a
--
return @str
END
select [dbo].HabaHaba('Dear <%FirstName%> <%LastName%> go to <%Email%> and <%SomeShit1%>. Best regards !')
select [dbo].HabaHaba('Dear <%FirstName%> <%LastName%> go to <%Email%> and <%SomeShit2%>. Best regards !')
----------------------------------------------------------------------------------
Dear Gates Billy go to billy@microsoft.com and xz. Best regards !
(1 row(s) affected)
----------------------------------------------------------------------------------
Dear Gates Billy go to billy@microsoft.com and <%SomeShit2%>. Best regards !
(1 row(s) affected)