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>
'
我想要这样的结果:
- 模块 1
- 模块 2
请注意 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)
我需要创建一个 SQL 服务器脚本,脚本的一部分是 选择根节点的直接子节点的名称并将其转换为 (n)varchar
。我不需要节点的属性或内容。
这是 xml 的示例:
declare @XML xml
set @XML =
'
<config>
<module1 />
<module2 />
</config>
'
我想要这样的结果:
- 模块 1
- 模块 2
请注意 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)