1

使用 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 上阅读的任何文档中甚至可以找到它,我都找不到如何做到这一点。

4

1 回答 1

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"用来更新字段。

于 2015-06-09T19:20:02.720 回答