使用修改方法在sql中插入xml
Posted
技术标签:
【中文标题】使用修改方法在sql中插入xml【英文标题】:Insert into xml in sql using modify method 【发布时间】:2014-05-16 06:27:16 【问题描述】:我必须修改表字段值中的现有 xml。 每个行值都有不同的 xml 标签,如
1 行。
'<root><comments><comment>comments1</comment><comment>comments2</comment></comments></root>'
2 行。
'<Users><User><Name>MAK</Name></User><User><Name>DANNY</User></Users>'
我需要添加标签<Resource>some ID</Resource>
在根节点之后。
点赞'<Users>**<Resource>some ID</Resource>**<User><Name>comments1</Name></User><User><Name>comments2</User></Users>'
我已尝试使用以下代码。
declare @xml xml
set @xml = '<root><comments><comment>comments1</comment><comment>comments2</comment></comments></root>'
declare @Note varchar(10)
declare @insertnode nvarchar(100)
set @insertnode='commeressd'
declare @mainnode varchar(50)
set @mainnode='(//root)[1]'
set @Note = 'comment3'
SET @xml.modify('insert <Resource>xs:string(sql:variable("@insertnode"))</Resource> as first into xs:string(sql:variable("@mainnode"))')
select @xml
之后的表达式
进入
报错
XQuery [modify()]: '' 附近的语法错误
..我们如何动态地将其指定为表达式。
任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:您可以使用/*[1]
找到您希望插入发生的“第一个”根节点。
declare @xml xml
set @xml = '
<root>
<comments>
<comment>comments1</comment>
<comment>comments2</comment>
</comments>
</root>'
declare @insertnode nvarchar(100)
set @insertnode='ResourceID'
set @xml.modify('insert element Resource sql:variable("@insertnode") as first into /*[1]')
select @xml
结果:
<root>
<Resource>ResourceID</Resource>
<comments>
<comment>comments1</comment>
<comment>comments2</comment>
</comments>
</root>
【讨论】:
以上是关于使用修改方法在sql中插入xml的主要内容,如果未能解决你的问题,请参考以下文章