Поскольку это слово, которое вы хотите заменить, не является содержимым тега XML, а является только частью этого содержимого, вы можете просто захотеть проверить варианты замены на основе текста.
Это будет работать, еслиу вас было что-то вроде этого:
declare @xml as xml
set @xml = '<root><info>well hello this is a <rating>very good</rating> example</info></root>'
Затем вы могли бы обратиться к XML и заменить содержимое <rating>....</rating>
чем-то другим:
declare @replacement as varchar(50)
set @replacement = 'excellent'
set
@xml.modify('replace value of (/root/info/rating/text())[1]
with sql:variable("@replacement")')
select @xml
Но в нынешнем виде,вам, вероятно, придется взять текстовое содержимое <info>
и сделать текстовую замену этому:
DECLARE @xml as XML
SET @xml = '<root><info>well hello this is a very good example</info></root>'
DECLARE @newcontent VARCHAR(1000)
SELECT @newcontent = @xml.value('(/root/info/text())[1]', 'VARCHAR(1000)')
-- replace "very" with "excellent"
SELECT @newcontent = REPLACE(@newcontent, 'very', 'excellent')
SET
@xml.modify('replace value of (/root/info/text())[1]
with sql:variable("@newcontent")')
SELECT @xml