【发布时间】:2017-10-23 17:19:03
【问题描述】:
您好,我有一个新手问题,抱歉。
我必须使用设计愚蠢的 XML 格式 将对象属性数据作为标签提供,其中 标记值更改它意味着一个属性。 未提供属性的地方,例如。哺乳动物,这意味着 值未知。
以以下为例: 第三级标签可以是 20 个不同的值之一。 第四级标签(哺乳动物)可以是几个值之一,并且 可能不存在。
如何编写 XQuery 命令以超越 未知/缺少标签?
选择 t.c.value('v[1]', 'varchar(100)') 作为动物 从@xml.nodes('/recs/rec//a1// as t.c
declare @xml xml =
'
<recs>
<rec>
<a>
<a1>
<mammal>
<v>dog</v>
</mammal>
</a1>
</a>
</rec>
<rec>
<b>
<a1>
<mammal>
<v>cat</v>
</mammal>
</a1>
</b>
</rec>
<rec>
<b>
<a1>
<v>pig</v>
</a1>
</b>
</rec>
</recs>'
谢谢
【问题讨论】:
-
不清楚你在问什么。 “超越”是什么意思?你的意思是你想选择所有第五级元素而不考虑它们的父元素的名称吗?
/*/*/*/*/*可以做到这一点。 -
是的,如果父元素的名称一致,我就可以编写查询来获取它们。我的示例仅显示了两个名称,但可能有数百个。
标签: sql-server xml xquery