SQL update语句转换为XQuery

时间:2015-03-04 11:55:22

标签: sql sql-update xquery

因此,就上述状态而言,我更倾向于将更新sql查询转换为xquery,我的更新示例如下所示。

UPDATE Products
SET [List Price] = 19
WHERE [ID]= 1;

如果需要假设一个变量,我会了解XQuery的工作方式,并且路径只是使用随机示例,如果这是唯一的方法。我找不到一个很好的例子来解释如何以同样的方式更新。

<Products>
<Supplier_x0020_IDs>
<Value>4</Value>
</Supplier_x0020_IDs>
<ID>1</ID>
<Product_x0020_Code>NWTB-1</Product_x0020_Code>
<Product_x0020_Name>Northwind Traders Chai</Product_x0020_Name>
<Standard_x0020_Cost>13.5</Standard_x0020_Cost>
<List_x0020_Price>18</List_x0020_Price>
<Reorder_x0020_Level>10</Reorder_x0020_Level>
<Target_x0020_Level>40</Target_x0020_Level>
<Quantity_x0020_Per_x0020_Unit>10 boxes x 20 bags</Quantity_x0020_Per_x0020_Unit>
<Discontinued>0</Discontinued>
<Minimum_x0020_Reorder_x0020_Quantity>10</Minimum_x0020_Reorder_x0020_Quantity>
<Category>Beverages</Category>
</Products>

这就是XML的样子,它是愚蠢的混乱因此我为什么避免发布它但现在又被卡住了

1 个答案:

答案 0 :(得分:0)

如果你想在XQuery中做更新,那么你需要使用XQuery Update,这实际上取决于你的实现是否支持这个。

由于你还没有告诉我们你的XML是什么样的,我会假设:

<Products>
  <Product>
    <ID>1</ID>
    <ListPrice>20</ListPrice>
  </Product>
  <Product>
    <ID>2</ID>
    <ListPrice>7</ListPrice>
  </Product>
</Products>

如果是这样,您可以使用以下XQuery Update表达式:

replace value of node /Products/Product[ID eq "1"]/ListPrice with "19"

请注意,我假设您的XQuery处理器不是架构,并且不知道节点的类型,因此我假设整个字符串。此外,我已从&#34; List Price&#34;因为XML元素的名称中不能包含空格。