我有一个类似于以下格式的 XML 文件:
<XML>
<Field1>100</Field1>
<Field2>200</Field2>
<Field3>300</Field3>
<Test>400</Test>
</XML>
我需要编写一个查询来获取所有以
Field
开头的元素值。所以鉴于上面的 XML 结果应该是FieldVal
--------
100
200
300
我已经尝试了以下但它不起作用:
Select
xc.value('text()', 'int')
From
@XMLData.nodes('/XML/[starts-with(name(), ''Field'')]') As xt(xc)
注意: 我很清楚,如果我重新格式化我的 XML,这个任务可以很容易地完成,但不幸的是我无法控制 XML 的格式。
最佳答案
一种方法是
declare @XMLData xml ='<XML>
<Field1>100</Field1>
<Field2>200</Field2>
<Field3>300</Field3>
<Test>400</Test>
</XML>'
Select
xc.value('.', 'int')
From @XMLData.nodes('/XML/*') As xt(xc)
WHERE xc.value('local-name(.)', 'varchar(50)') LIKE 'Field%'