首先,我會開始注意到,它不是我選擇在XML中使用nvp,而是在修改過程中使用nvp。話雖這麼說,我有一個包含具有以下XML的XML列的表:名稱值對的SQL 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 [導致.xmlField.value()]: '值()' 需要單(或空序列),實測值操作數的類型'xdt:untypedAtomic *'
我知道我走的是正確的道路,但我不太確定我應該做什麼。任何人都可以指出我正確的方向嗎?
關閉,但我希望在選擇字段中提供過濾功能,因爲這將允許我準確控制返回的屬性。 – Kyle 2012-08-08 14:24:37
我添加了where子句... – podiluska 2012-08-08 14:27:22
謝謝。我想我仍然沒有解釋我在找什麼。 where子句將其限制爲僅一個實體。我特別試圖在xquery中進行過濾,以便可以使用已知的屬性名稱來區別該字段。我猜這更多的是一個xquery問題。感謝您的幫助,您的回答給了我更多想法來思考。 – Kyle 2012-08-08 14:31:57