Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sql xquery将xml块添加到特定位置_Sql_Xml_Sql Server 2012_Xquery_Sqlxml - Fatal编程技术网

sql xquery将xml块添加到特定位置

sql xquery将xml块添加到特定位置,sql,xml,sql-server-2012,xquery,sqlxml,Sql,Xml,Sql Server 2012,Xquery,Sqlxml,使用SQLServer2012 sp1,我无法找到解决方案,但我认为不可能将xml块添加到表中现有xml列的特定位置。例如,假设我们有tbTable.AnimalsXML,它是: <Animals> <Animal name="Dog"> <Enclosure id="Default"> <Value>xyz</Value> </Enclosure> </Animal> &

使用SQLServer2012 sp1,我无法找到解决方案,但我认为不可能将xml块添加到表中现有xml列的特定位置。例如,假设我们有
tbTable.AnimalsXML
,它是:

<Animals>
  <Animal name="Dog">
    <Enclosure id="Default">
      <Value>xyz</Value>
    </Enclosure>
  </Animal>
  <Animal name="Cat">
    <Enclosure id="Default">
      <Value>xyz</Value>
    </Enclosure>
  </Animal>
  <Animal name="Bird">
    <Enclosure id="Default">
      <Value>xyz</Value>
    </Enclosure>
  </Animal>
  <Animal name="Sheep">
    <Enclosure id="Default">
      <Value>xyz</Value>
    </Enclosure>
  </Animal>
</Animals>
可以使用construct在某些现有元素之后插入新元素。下面的示例在现有的
元素之后插入新元素:

declare @data XML = '<Animals>
  <Animal name="Dog">
    <Enclosure id="Default">
      <Value>xyz</Value>
    </Enclosure>
  </Animal>
  <Animal name="Cat">
    <Enclosure id="Default">
      <Value>xyz</Value>
    </Enclosure>
  </Animal>
  <Animal name="Bird">
    <Enclosure id="Default">
      <Value>xyz</Value>
    </Enclosure>
  </Animal>
  <Animal name="Sheep">
    <Enclosure id="Default">
      <Value>xyz</Value>
    </Enclosure>
  </Animal>
</Animals>'

set @data.modify('
insert 
    <Animal name="Goat">
        <Enclosure id="Default">
          <Value>xyz</Value>
        </Enclosure>
    </Animal>
after (/Animals/Animal[@name="Cat"])[1]
')
declare@data-XML=”
xyz
xyz
xyz
xyz
'
set@data.modify('
插入
xyz
在(/Animals/Animal[@name=“Cat”])[1]之后
')

awww谢谢,我使用了first&last和getting Nothing,但根据[链接]不知道之前和之后的情况
update tbTable set AnimalsXML.modify('
            insert
                sql:variable("@var")
            as "specific position"
            into (/Animals)[1]')
declare @data XML = '<Animals>
  <Animal name="Dog">
    <Enclosure id="Default">
      <Value>xyz</Value>
    </Enclosure>
  </Animal>
  <Animal name="Cat">
    <Enclosure id="Default">
      <Value>xyz</Value>
    </Enclosure>
  </Animal>
  <Animal name="Bird">
    <Enclosure id="Default">
      <Value>xyz</Value>
    </Enclosure>
  </Animal>
  <Animal name="Sheep">
    <Enclosure id="Default">
      <Value>xyz</Value>
    </Enclosure>
  </Animal>
</Animals>'

set @data.modify('
insert 
    <Animal name="Goat">
        <Enclosure id="Default">
          <Value>xyz</Value>
        </Enclosure>
    </Animal>
after (/Animals/Animal[@name="Cat"])[1]
')