SQL Server XQuery 始终返回 null

问题描述 投票:0回答:1

我正在学习如何使用 SQL 读取 XML,目前正在努力返回我期望的所需数据。

对于给定的示例,我期望返回值为“Data”的“tagFourData”。相反,我似乎总是得到 NULL

declare @data xml = '<object>
    <Overview Requester="Me">
        <Request GetData="Y" Title="Get First SQL DataSet in XML" Id="1">
            <Detailed tagOne="yap" tagTwo="Yap">
                <!--Further elements/attributes if needed -->
            </Detailed>
        </Request>
        <Request GetData="N" Title="Get Second SQL DataSet in XML" Id="2">
            <Detailed tagThree="yap" tagFour="Yap">
                <!--Further elements/attributes if needed -->
            </Detailed>
        </Request>
        <Request GetData="Y" Title="Get Third SQL DataSet in XML" Id="3">
            <Detailed tagFour="Data" tagFive="data2" />
        </Request>
    </Overview>
</object>'

select @data.value('(object/Overview/Request/Detailed/tagFour/node())[1]', 'nvarchar(max)') as tagFourData

我的 Select 语句的编写方式有问题吗?

最好也寻找一个动态的解决方案。也就是说 tagFour 可能位于完全不同的 Id 下,但结构 Object/Overview/Request/Detailed 始终相同 谢谢你

sql sql-server-2012 xquery
1个回答
0
投票

你很接近:

select @data.value('(object/Overview/Request/Detailed/@tagFour)[1]', 'nvarchar(max)') as tagFourData

需要额外的

@
来指示属性而不是子元素。

© www.soinside.com 2019 - 2024. All rights reserved.