まず最初に、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*'のオペランドが見つかりました
私は正しい道を進んでいることを知っていますが、正確に何をすべきかについてはまったく前向きではありません。誰かが私を正しい方向に向けることができるでしょうか?