从SQL Server中的XML读取子节点及其父属性

Jasqlg

我有一个类似于此结构的XML。

<Root>
<id>a2bh5</id>
<Student ID="123">
    <Name>abc<Name>
    <course>ETL<course>
    <Scores>
        <Score>
            <Subject>SSIS<subject>
            <grade>B<grade>
        </score>
        <Score>
            <Subject>Informatica<subject>
            <grade>C<grade>
        </score>
    </Scores>
</Student>
<Student ID="456">
    <Name>xyz<Name>
    <course>ETL<course>
    <Scores>
        <Score>
            <Subject>Pentaho<subject>
            <grade>F<grade>
        </score>
        <Score>
            <Subject>Datastage<subject>
            <grade>A<grade>
        </score>
    </Scores>
</Student>
</Root>

我想在SQL Server中使用Xquery从子节点(分数)及其父属性(Id)中获取详细信息。

对于所有主题,期望查询结果如下。请帮忙。

Student_Id subject grade
========================
123     SSIS        B   
marc_s

清理好示例XML并正确关闭所有标签后,请尝试以下操作:

DECLARE @input XML = '<Root>
<id>a2bh5</id>
<Student ID="123">
    <Name>abc</Name>
    <course>ETL</course>
    <Scores>
        <Score>
            <Subject>SSIS</Subject>
            <grade>B</grade>
        </Score>
        <Score>
            <Subject>Informatica</Subject>
            <grade>C</grade>
        </Score>
    </Scores>
</Student>
<Student ID="456">
    <Name>xyz</Name>
    <course>ETL</course>
    <Scores>
        <Score>
            <Subject>Pentaho</Subject>
            <grade>F</grade>
        </Score>
        <Score>
            <Subject>Datastage</Subject>
            <grade>A</grade>
        </Score>
    </Scores>
</Student>
</Root>'

SELECT
    StudentID = XStudents.value('@ID', 'int'),
    Course = XStudents.value('(course)[1]', 'varchar(50)'),
    Subject = XScore.value('(Subject)[1]', 'varchar(50)'),
    Grade = XScore.value('(grade)[1]', 'varchar(10)')
FROM
    @Input.nodes('/Root/Student') AS XT1(XStudents)
CROSS APPLY
    XStudents.nodes('Scores/Score') AS XT2(XScore)

输出为:

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

更新SQL Server中的xml节点属性,并过滤其他属性

来自分类Dev

SQL Server中两个xml节点的数值比较

来自分类Dev

将XML节点转换为SQL Server中的行

来自分类Dev

使用XML的节点和子节点将行从xml中插入到SQL Server中的表中

来自分类Dev

SQL Server将XML子节点附加到父节点

来自分类Dev

在SQL Server中读取XML重复标签

来自分类Dev

在SQL Server中更新XML节点

来自分类Dev

在SQL中读取XML属性时返回INT(0)

来自分类Dev

SQL Server的子节点中的空白xml命名空间

来自分类Dev

跟踪SQL Server中XML节点的流

来自分类Dev

在SQL Server中的XML节点上进行多目标搜索

来自分类Dev

如何使用SQL Server 2016删除XML子节点

来自分类Dev

在SQL Server中读取xml文件

来自分类Dev

从SQL列读取XML节点值

来自分类Dev

将XML节点插入SQL Server中的表

来自分类Dev

如何使用sql server在XML文档中获取包含具有给定属性值的子节点的节点?

来自分类Dev

将XML节点转换为SQL Server中的行

来自分类Dev

从SQL Server 2005中的列中获取查询的xml节点

来自分类Dev

如何使用Oracle SQL查询选择XML中的特定节点名称及其值?

来自分类Dev

从SQL Server中的XML文件删除节点

来自分类Dev

SQL Server:读取XML数据

来自分类Dev

在SQL Server 2008中删除XML子节点元素

来自分类Dev

跟踪SQL Server中XML节点的流

来自分类Dev

在SQL Server 2012中读取具有动态行和属性的xml

来自分类Dev

如何在sql中为xml的所有子节点添加属性

来自分类Dev

XQUERY SQL Server中节点XML文件中的解析器属性如何

来自分类Dev

在SQL Server中读取动态XML节点

来自分类Dev

SQL - 从属性名称读取 XML 节点值

来自分类Dev

拉取 SQL Server 中的所有子 XML 节点

Related 相关文章

热门标签

归档