【发布时间】:2021-11-26 15:52:26
【问题描述】:
使用 Sql Server 2008 中的查询,我想从 xml 中提取 tagName 和 tagValue,但我只能检索 tagValue。 我想动态提取它们,因为标记名可能会改变
感谢任何帮助
这是代码:
DECLARE @test AS XML='
<properties>
<property key="FirstProp">Blah</property>
<property key="SecondProp">Blah2</property>
<property key="ThirdProp">Blah3</property>
<property key="Other">80000011b</property>
<property key="Another">TheEnd</property>
<property key="MoreDIfficult">
<structure type="">
<property key="Id">10100</property>
<property key="Name">TestName</property>
</structure>
</property>
</properties>
';
SELECT
PROPERTY.N.value('local-name(.)', 'varchar(max)') AS TagName
,PROPERTY.N.value('.', 'nvarchar(100)') AS TagValue
FROM
(SELECT CAST(@test AS XML) Prop ) XML
OUTER APPLY XML.Prop.nodes('/properties/*') AS PROPERTY(N);
【问题讨论】:
-
“标签名称”是什么意思?这似乎工作正常,并在
TagName列中返回'property'。 -
旁注:SQL Server 2008 已完全不支持大约 2.5 年。 强烈建议您升级到受支持的版本。您不这样做的时间越长,就越难获得支持的版本。
-
请编辑您的问题并添加所需的输出。
标签: xml sql-server-2008