首先,我首先要指出的是,在 XML 中使用 nvp 并不是我的选择,而且它正在修改过程中。话虽如此,我有一个表,其中包含一个 XML 列,该列具有以下 xml:
<root>
<results>
<result name='First Result'>
<property name='Property1' value='Value1' />
<property name='Property2' value='Value2' />
</result>
</results>
</root>
我有以下查询可以让我得到结果名称:
SELECT
T.N.value('@name', 'nvarchar(256)') AS resultName
FROM
results CROSS APPLY xmlField.nodes('/root/results/result') AS T(N)
但我不肯定如何让房产展示。我尝试了以下方法:
SELECT
T.N.value('@name', 'nvarchar(256)') AS resultName,
T.N.value('/property[@name="Property1"]/@value', 'nvarchar(256)') AS Property
FROM
results CROSS APPLY xmlField.nodes('/root/results/result') AS T(N)
但我收到以下错误:
XQuery [results .xmlField.value()]: 'value()' 需要一个单例(或空序列),找到类型为 'xdt:untypedAtomic *' 的操作数
我知道我走在正确的道路上,但我不太确定我应该做什么。有人能指出我正确的方向吗?