【问题标题】:Read XML Tags using SQL Query使用 SQL 查询读取 XML 标记
【发布时间】:2013-05-31 14:14:54
【问题描述】:
<University>
  <RegistrationCode>12859</RegistrationCode>
  <Colleges>
    <College>
      <CollegeCode>0001</CollegeCode>
      <CollegeName>NIMS</CollegeName>
    </College>
    <College>
      <CollegeCode>0002</CollegeCode>
      <CollegeName>OXFORD</CollegeName>
    </College>
  </Colleges>
</University>

我想使用 SQL Query 从上面的 XML 中提取下面的内容。有人可以帮我吗?

RegistrationCode   CollegeCode      CollegeName
-----------------------------------------------
12859              0001             NIMS
12859              0002             OXFORD

【问题讨论】:

标签: sql-server


【解决方案1】:

试试这个:

DECLARE @input XML = '<University>
<RegistrationCode>12859</RegistrationCode>
<Colleges>
<College>
<CollegeCode>0001</CollegeCode>
<CollegeName>NIMS</CollegeName>
</College>
<College>
<CollegeCode>0002</CollegeCode>
<CollegeName>OXFORD</CollegeName>
</College>
</Colleges>
</University>'

SELECT
    RegistrationCode = Univ.value('(RegistrationCode)[1]', 'int'),
    CollegeCode = Colleges.value('(CollegeCode)[1]', 'int'),
    CollegeName = Colleges.value('(CollegeName)[1]', 'varchar(100)')
FROM 
    @input.nodes('University') AS XTbl(Univ)
CROSS APPLY
    Univ.nodes('Colleges/College') AS XTbl2(Colleges)

这给了我你想要的输出。

基本上,您首先需要有一个&lt;University&gt; 节点列表(这里只有一个)才能获取注册码,然后从该&lt;University&gt; 节点中使用CROSS APPLY 获取&lt;Colleges&gt;/&lt;College&gt; 子节点,然后获取这些子节点中的大学代码和名称

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多