这是我的xml存储在名为UserDef
的XML类型列中<Orders>
<Document>
<DocumentID>abc123</DocumentID>
<ActualShipDate />
<Comments/>
</Document>
<Document>
....
...
</Document>
</Orders>
我正在尝试使用以下内容填充Comments
元素:
declare @t1 table (id bigint, userdef xml)
insert into @t1
select id, userdef from MyMainTable
update @t1
set userdef.modify('replace value of(/Orders/Document/Comments[1]/text())[1] with "NO COMMENTS"')
select * from @t1
但是,我没有看到Comments
完全填充。我应该采取哪些不同的方式来实现这一目标?
答案 0 :(得分:4)
元素<Comments/>
没有text()
个节点,您应该insert
而不是replace
:
update @t1
set userdef.modify('
insert text{"NO COMMENTS"}
into (/Orders/Document/Comments[1])[1]
')
where id = @id;
如果希望从sql变量插入文本,可以使用以下构造:
declare @comments varchar(1000);
set @comments = 'NO COMMENTS';
update @t1
set userdef.modify('
insert text {sql:variable("@comments")}
into (/Orders/Document/Comments[1])[1]
')
where id = @id;