使用SQL Server 2012,如果我在XML类型列的一行中具有以下值:
<ArrayOfScheduledJobParameters xmlns="http://schemas.data.org/ScheduledJobServiceLibrary">
<ScheduledJobParameters>
<Key>OutputFileName</Key>
<Value>CPVR{0}.txt</Value>
</ScheduledJobParameters>
<ScheduledJobParameters>
<Key>DaysBeforeExpiration</Key>
<Value>60</Value>
</ScheduledJobParameters>
<ScheduledJobParameters>
<Key>MaxItemsByReportServiceCall</Key>
<Value>100</Value>
</ScheduledJobParameters>
</ArrayOfScheduledJobParameters>
我想根据元素<Value>
中包含的值更改元素<Key>
的值。具体来说,我希望能够将<Value>
设置为150,其中元素<Key>
包含值'MaxItemsByReportServiceCall'。我所能做的就是更新<ScheduledJobParameters>
的第一个节点。如果我在XML DML上阅读的任何文档中都可以实现,我找不到怎么做。
答案 0 :(得分:2)
您可以使用函数modify()
并更正XQuery来设置所需的值。但语法非常棘手:
UPDATE YourTableName
SET ColumnName.modify('declare namespace NS="http://schemas.data.org/ScheduledJobServiceLibrary";replace value of (/NS:ArrayOfScheduledJobParameters/NS:ScheduledJobParameters[NS:Key="MaxItemsByReportServiceCall"]/NS:Value/text())[1] with "150"')
WHERE <your conditions to select rows>
在modify()
函数中,您首先声明您的命名空间。然后使用replace value of
并更正XQUery。对于XQuery,您可以找到具有值ScheduledJobParameters
的子元素名称的MaxItemsByReportServiceCall
元素,并选择其子元素值的文本。然后使用with "new value"
更新字段。