我的DataXML看起来像这样
<TestResults>
<MethodResult>
X
X
<StepResult name="BluetoothERROR">
X
X
X
X
X
X
X
<StepResult name="FLOWERROR1">
<Number value="-100" />
</ActualValue>
X
X
<StepResult name="PowerOffError">
X
X
X
</StepResult>
</MethodResult>
</TestResults>
其中X表示具有不同名称的StepResult的其他实例,例如BluetoothError或PowerOffError。假定其他StepResults可以具有与“ FLOWERROR1”相似的输出。
我对名称为“ FlowError1”的StepResult特别感兴趣,我想返回Number值-100。
我已经尝试过这行代码,但是它不起作用,只显示Nulls。
f.ResultXML.value('(/TestResults/MethodResult/StepResult/ActualValue/Number/@Value)[1]', 'varchar(max)') As "Actual Value"
我应该怎么做?
答案 0 :(得分:0)
您可以按名称过滤节点并返回第一个匹配节点的值:
select @data.value('(TestResults/MethodResult/StepResult[@name="FLOWERROR1"]/ActualValue/Number)[1]/@value', 'int')
请参见Introduction to Using XPath Queries
和XQuery Language Reference
。