SQL 服务器脚本 - select xml root 的子节点作为 (n)varchar

SQL Server Script - select xml child nodes of root as (n)varchar

我需要创建一个 SQL 服务器脚本,脚本的一部分是 选择根节点的直接子节点的名称并将其转换为 (n)varchar。我不需要节点的属性或内容。

这是 xml 的示例:

declare @XML xml

set @XML = 
'
<config>
  <module1 />    
  <module2 />  
</config>
'

我想要这样的结果:

请注意 xml 未硬编码 并且可以有许多不同的子节点。

我已经看过 this (msdn)link,但乍一看似乎无法使用那些 XML 方法。

非常感谢, 谢尔

如果你想要你提到的子节点的 XML 你可以使用查询方法,例如;

select 
    cast(@XML.query('//GuiConfiguration/Activities') as nvarchar(max)), 
    cast(@XML.query('//GuiConfiguration/Reservations') as nvarchar(max))

编辑:对精炼问题的回答

要获取根的直接子节点的名称,您可以使用它;

select
    cast(t.c.query('local-name(.)') as nvarchar(max))
from
    @xml.nodes('//*[1]/child::node()') as t(c)