SQL:查询列表XML中的列表

时间:2010-09-08 12:17:27

标签: sql xml xpath

我正在尝试查询SQL Server中的某些XML,但遇到了困难:

以下是一些示例XML:

<BaseReport>
  <Parties>
    <Party>
     <SubjectType>
      <ListItem Name="SubjectType1Name" />
      <ListItem Name="SubjectType2Name" />
     </SubjectType>
    </Party>
    <Party>
      <SubjectType>
       <ListItem Name="SubjectType1Name" />
       <ListItem Name="SubjectType2Name" />
     </SubjectType>
    </Party>
  </Parties>
</BaseReport>

我的目标是从我的xml中提取主题类型名称。我不知道如何查询列表中的列表。我想抓住第一个派对的第一个主题类型。我试过以下无济于事:

 SELECT myXML.value('(/BaseReport/Parties/Party/SubjectType/@Name)[1]', 'varchar(50)') as Name_Type
 FROM MyTable

它返回所有空值(也就是我的查询错误)。有什么建议吗?

1 个答案:

答案 0 :(得分:2)

您写道:

  

我想抓住第一个派对的第一个   主题类型

所以,正确的XPath应该是:

/BaseReport/Parties/Party[1]/SubjectType/ListItem[1]/@Name