Sql 从我的xml中获取值

Sql 从我的xml中获取值,sql,sql-server,xml,for-xml,Sql,Sql Server,Xml,For Xml,我不确定返回此值的正确元素/节点/或任何名称,但以下是我的示例xml: DECLARE @Input xml = ' <root> <myValue> <more></more> <more></more> </myValue>' <root> 我知道了,很抱歉打扰你。我不确定我想在这里做什么的技术术语,但在我的例子中,“myValue”节点包含动态查

我不确定返回此值的正确元素/节点/或任何名称,但以下是我的示例xml:

DECLARE @Input xml = '
<root>
    <myValue>
        <more></more>
        <more></more>
    </myValue>'
<root>

我知道了,很抱歉打扰你。我不确定我想在这里做什么的技术术语,但在我的例子中,“myValue”节点包含动态查询所需的dbo.Table对象的名称

SELECT Nodes.Name.query('local-name(.)') 
FROM @Input.nodes('/root/*[1]') As Nodes(Name)

这个问题很不清楚

看看这个例子,找出各种阅读方法:

DECLARE @Input xml = 
'<root>
    <myValue>value 1
        <more>more 1</more>
        value 2
        <more>more 2</more>
        value 3
    </myValue>
</root>';
-获取元素的派生表

使现代化 你的问题

我想从这里得到的是myValue的值

似乎在寻找某个元素的值,但正如您的自我回答所介绍的,您似乎在寻找元素名称,其中more只是一个示例

请阅读和

更新2 读取元素的元数据是使用本地名称完成的(就像您自己发现的那样):


我对你想做什么感到有点困惑。如果您搜索从XPath获取XML值,可能会有所帮助。请查看我发布的答案,并告知是否有更安全或更好的方法获取该值。如果有,我会给其他人答案。再一次,一个相当模糊的问题的综合答案+1当你在寻找元素名称之间的文本时,你使用本地名称是正确的。但是节点中的XPath将只指向/root下面的第一个节点,不知道您要找的是不是这个节点。为了得到字符串形式的值,您可能更喜欢值而不是查询。请参阅我的最新答案。
DECLARE @Input xml = 
'<root>
    <myValue>value 1
        <more>more 1</more>
        value 2
        <more>more 2</more>
        value 3
    </myValue>
</root>';
SELECT @Input.value('(/root/myValue/text())[2]','nvarchar(max)') AS SecondFloatingTextInMyValue
      ,@Input.value('(/root/myValue/more/text())[1]','nvarchar(max)') FirstMoreElement
      ,@Input.value('(/root/myValue/more/text())[2]','nvarchar(max)') SecondMoreElement;
SELECT More.Nodes.value('(./text())[1]','nvarchar(max)') AS MoreValue
FROM @Input.nodes('/root/myValue/more') AS More(Nodes)
DECLARE @Input xml = 
'<root>
    <myValue>
        <OneValue></OneValue>
        <Another></Another>
    </myValue>
</root>';

SELECT nd.value('local-name(.)','nvarchar(max)') AS NameOfNodeBelowMyValue
FROM @Input.nodes('/root/myValue/*') AS A(nd)