【发布时间】:2011-11-18 10:11:54
【问题描述】:
我在 SQLServer 2008 R2 中有以下 XML 数据
DECLARE @data XML
SET @data = '<root attr1="val1" attr2="val2" attr3="val3"/>'
我想从根目录中获取属性名称列表并将其作为元素列表输出,如下所示:
<root>
<attr1>val1</attr1>
<attr2>val2</attr2>
<attr3>val3</attr3>
</root>
我一直在使用 FLWOR 查询来获得我想要的东西。到目前为止,我有这个:
SELECT @data.query('
for $attr in /*/@*
return <test>{fn:string($attr)}</test>
')
这很好,几乎是我需要的,但是当我尝试这样做时......
SELECT @data.query('
for $attr in /*/@*
return <{fn:local-name($attr)}>{fn:string($attr)}</{fn:local-name($attr)}>
')
不开心。除了硬编码的元素名称之外,它似乎不喜欢任何东西。
如何返回具有计算名称的元素?
【问题讨论】:
标签: sql-server xml xquery flwor