1

我有一些具有以下格式的 XML:

<Data>
  <Surveys>
    <Survey id="1">
       <Answers>
         <Answer aid="1">
         <Answer aid="2">
       </Answers>
    </Survey>
    <Survey id="2">
       <Answers>
         <Answer aid="1">
         <Answer aid="2">
         <Answer aid="3">
         <Answer aid="4">
       </Answers>
    </Survey>
  </Surveys>
</Data>  

我正在插入一个表格进行这样的调查(我已经做得很简单,所以没有太多的事情要处理)

insert into survey
select T.o.value('@id', 'int'),
from @xml.nodes('/Data/Surveys/Survey')as T(o)

这是有效的......但我想将调查的相关答案在同一点放入不同的相关表中。我无法单独插入 stmt 并再次使用节点,因为调查 ID 不在答案节点本身中。在 C# 中,我可以使用 LINQtoXML 执行此操作,但解析/循环元素的速度较慢。

有没有办法在 TSQL 中做到这一点?

谢谢,大卫

4

1 回答 1

0

尝试这个:

select T.o.value('@id', 'int') sid,
       A.o.value('@aid', 'int') as aid 
from @xml.nodes('/Data/Surveys/Survey')as T(o)
  cross apply T.o.nodes('Answers/Answer') as A(o) 
于 2012-08-03T06:32:58.413 回答