繁体   English   中英

Xml中的XML列的Xquery.SQL Server中的修改不起作用

[英]Xquery with XML column in Xml.Modify in SQL Server not working

我正在尝试在XML节点中修改它获得新ID的XML节点,在该XML节点中插入此xmlfields,其中groupid = @groupid元素和qubefieldId = @i

有人可以告诉我为什么这不起作用吗?

Update @temp
Set xmlField.modify('replace value of (/ArrayOfQubeField/QubeField[QubeFieldID = sql:variable("@i")]/text())[1] with sql:variable  ("@newID")')
Where XmlField.exist('/ArrayOfQubeField/QubeField[GroupID = sql:variable ("@groupID")][QubeFieldID = sql:variable("@i")]') = 1;

这是XML

<ArrayOfQubeField xmlns:xsi="http://www.w3.org/2001/XMLSchema-   instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <QubeField>
      <QubeFieldID>1</QubeFieldID>
      <GroupID>1</GroupID>
      <QubeFieldName>ID</QubeFieldName>
      <QubeFieldSelected>true</QubeFieldSelected>
      <Order>0</Order>
  </QubeField>
 <QubeField>
 <QubeFieldID>1</QubeFieldID>
     <GroupID>4</GroupID>
     <QubeFieldName>Name</QubeFieldName>
     <QubeFieldSelected>true</QubeFieldSelected>
     <Order>1</Order>
 </QubeField>
 <QubeField>
    <QubeFieldID>2</QubeFieldID>
    <GroupID>3</GroupID>
    <QubeFieldName>Town</QubeFieldName>
    <QubeFieldSelected>true</QubeFieldSelected>
    <Order>2</Order>
 </QubeField>
 <QubeField>
    <QubeFieldID>1</QubeFieldID>
    <GroupID>3</GroupID>
    <QubeFieldName> Name</QubeFieldName>
    <QubeFieldSelected>true</QubeFieldSelected>
    <Order>3</Order>
 </QubeField>
 <QubeField>
    <QubeFieldID>13</QubeFieldID>
    <GroupID>1</GroupID>
    <QubeFieldName>Migrated</QubeFieldName>
    <QubeFieldSelected>true</QubeFieldSelected>
    <Order>4</Order>
 </QubeField>
 <QubeField>
   <QubeFieldID>16</QubeFieldID>
   <GroupID>1</GroupID>
   <QubeFieldName>Date</QubeFieldName>
   <QubeFieldSelected>true</QubeFieldSelected>
   <Order>5</Order>
 </QubeField>
</ArrayOfQubeField>

您在XPath中缺少QubeFieldID ,请尝试如下操作:

update @temp set
    xmlField.modify('
        replace value of
        (/ArrayOfQubeField/QubeField[GroupID = sql:variable ("@groupID")]/QubeFieldID[. = sql:variable("@i")]/text())[1]
        with sql:variable("@newID")
    ')

sql小提琴演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM