Sql server 2008 耳塞更换SCR4 在SCR4上。原始=标准B4 我确实尝试添加原始的+'|'+替换,但得到一个递归错误。正如人们所料。下面是第二个字符串示例String1I,我尝试添加原始的+“|”+替换,但得到一个递归错误。正如人们所料。下面是第二个字符串示例Strin
耳塞更换SCR4 在SCR4上。原始=标准B4Sql server 2008 耳塞更换SCR4 在SCR4上。原始=标准B4 我确实尝试添加原始的+'|'+替换,但得到一个递归错误。正如人们所料。下面是第二个字符串示例String1I,我尝试添加原始的+“|”+替换,但得到一个递归错误。正如人们所料。下面是第二个字符串示例Strin,sql-server-2008,Sql Server 2008,耳塞更换SCR4 在SCR4上。原始=标准B4 我确实尝试添加原始的+'|'+替换,但得到一个递归错误。正如人们所料。下面是第二个字符串示例String1I,我尝试添加原始的+“|”+替换,但得到一个递归错误。正如人们所料。下面是第二个字符串示例String1 declare @RandomString table (ID int not null,ItemValue varchar(500) not null) insert into @RandomString(ID,ItemValue)
我确实尝试添加原始的+'|'+替换,但得到一个递归错误。正如人们所料。下面是第二个字符串示例String1I,我尝试添加原始的+“|”+替换,但得到一个递归错误。正如人们所料。下面是第二个字符串示例String1
declare @RandomString table (ID int not null,ItemValue varchar(500) not null)
insert into @RandomString(ID,ItemValue)
values (1,'<Strings><B1>String1</B1><B2>String2</B2><B3>String3</B3><B4>String4</B4></Strings>')
declare @SearchCharReplacement table (Original varchar(500) not null,Replacement varchar(500) not null)
Insert into @SearchCharReplacement(Original, Replacement)
values ('String1', 'abc'), ('String2', 'efg'),
('String3', 'hij'), ('String4', 'klm')
;With Replacements as (
select ID,ItemValue,0 as RepCount
from @RandomString
union all
select ID,SUBSTRING(REPLACE(ItemValue,Original, Replacement),1,500),rs.RepCount+1
from Replacements rs
inner join @SearchCharReplacement scr on CHARINDEX(scr.Original,rs.ItemValue) > 0
)
, FinalReplacements as (
select ID,ItemValue,ROW_NUMBER() OVER (PARTITION BY ID ORDER BY RepCount desc) as rn
from Replacements
)
update rs set ItemValue = fr.ItemValue
from @RandomString rs
inner join FinalReplacements fr on rs.ID = fr.ID and rn = 1
select * from @RandomString
<Strings><B1>abc</B1><B2>def</B2><B3>ghi</B3><B4>jkl</B4></Strings>
<Strings><B1>String1|abc</B1><B2>String2|def</B2><B3>String3|ghi</B3><B4>String4|jkl</B4></Strings>
Declare @XMLData Varchar(max) = N'<JEI><B1>String1</B1><B2>String2</B2><B3>FRED</B3><B4/></JEI>'
Declare @T Table(XMLCol xml)
Insert into @T select @XMLData
declare @SearchCharReplacement table (Original varchar(500) not null, Replacement varchar(500) not null)
Insert into @SearchCharReplacement(Original, Replacement)
values ('String1', 'abc'), ('String2', 'efg'),
('String3', 'hij'), ('String4', 'klm')
;With Strings as
(
SELECT a.value('B1[1]', 'varchar(15)') as B1
,a.value('B2[1]', 'varchar(15)') as B2
,a.value('B3[1]', 'varchar(15)') as B3
,a.value('B4[1]', 'varchar(15)') as B4
,CAST(XMLData.XMLCol as varchar(max)) as Data
FROM @T as XMLData
Cross APPLY XmlData.XMLCol.nodes('/JEI') AS JEI(a)
)
--SELECT * from strings
SELECT *
,REPLACE(
REPLACE(
REPLACE(
REPLACE(ST.Data,
ST.B1, COALESCE(ST.B1 + '|' + SCR1.Replacement ,ST.B1))
,ST.B2, COALESCE(ST.B2 + '|' + SCR2.Replacement, ST.B2))
,ST.B3, COALESCE(ST.B3 + '|' + SCR3.Replacement, ST.B3))
,ST.B4, COALESCE(ST.B4 + '|' + SCR4.Replacement, ST.B4))
AS x
FROM @T RS
CROSS JOIN Strings ST
LEFT OUTER JOIN @SearchCharReplacement SCR1
on SCR1.Original = ST.B1
LEFT OUTER JOIN @SearchCharReplacement SCR2
on SCR2.Original = ST.B2
LEFT OUTER JOIN @SearchCharReplacement SCR3
on SCR3.Original = ST.B3
LEFT OUTER JOIN @SearchCharReplacement SCR4
on SCR4.Original = ST.B4