1
Mit einem zuvor durchgeführten Beispiel hier gefunden, blieb ich mit einer einzigartigen Situation stecken Ich habe Schwierigkeiten, durch. HierSQL Server 2008 rekursive cte string ersetzen unter Beibehaltung der ursprünglichen Wert
ist der adaptierte Code
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
Ergebnis
<Strings><B1>abc</B1><B2>def</B2><B3>ghi</B3><B4>jkl</B4></Strings>
ist, was ich wirklich möchte ist
<Strings><B1>String1|abc</B1><B2>String2|def</B2><B3>String3|ghi</B3><B4>String4|jkl</B4></Strings>
Jede Hilfe sehr geschätzt wird
Ich habe versucht, Original + '|' + Ersetzung, aber einen Rekursionsfehler erhalten. Wie man es erwarten würde. Hier ist ein 2. String Beispiel String1 –