Pet*_*ter 5 replace sql-server-2005 xquery-sql
我想知道如何使用xquery更新SQL Server 2005中XML节点的部分文本
在以下示例中,我想将"very"替换为"excellent"
declare @xml as xml
set @xml = '<root><info>well hello this is a very good example</info></root>'
declare @replacement as varchar(50)
set @replacement = 'excellent'
declare @search as varchar(50)
set @search = 'very'
set @xml.modify('replace value of (/root/info/text())[1]
with replace((/root/info/text())[1],sql:variable("@search"),sql:variable("@replacement"))'
)
select @xml
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激
由于您要替换的这个单词不是 XML 标记的内容 - 而只是该内容的一部分 - 您可能只想查看基于文本的替换选项。
如果你有这样的东西,它会起作用:
declare @xml as xml
set @xml = '<root><info>well hello this is a <rating>very good</rating> example</info></root>'
Run Code Online (Sandbox Code Playgroud)
然后,您可以访问 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
Run Code Online (Sandbox Code Playgroud)
但就目前情况而言,您可能必须获取 的文本内容<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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3566 次 |
| 最近记录: |