XMLドキュメント内のノードの順序を見つけるにはどうすればよいですか?
私が持っているのはこのような文書です:
<value code="1">
<value code="11">
<value code="111"/>
</value>
<value code="12">
<value code="121">
<value code="1211"/>
<value code="1212"/>
</value>
</value>
</value>
そして私はこのことを次のように定義されたテーブルに入れようとしています
CREATE TABLE values(
code int,
parent_code int,
ord int
)
XMLドキュメントからの値の順序を保持します(コードで順序付けすることはできません)。言いたい
SELECT code
FROM values
WHERE parent_code = 121
ORDER BY ord
結果は、決定論的に、次のようになります。
code
1211
1212
私が試してみました
SELECT
value.value('@code', 'varchar(20)') code,
value.value('../@code', 'varchar(20)') parent,
value.value('position()', 'int')
FROM @xml.nodes('/root//value') n(value)
ORDER BY code desc
ただし、関数は受け入れませんposition()(' position()'は述語またはXPathセレクター内でのみ使用できます)。
どういうわけか可能だと思いますが、どうやって?