かなり大きいXMLブロブを(XML
タイプのカラムに)保存し、必要に応じてその場でXMLのサブセットを構築しようとするskunkworksプロジェクトを追求しています。保存されたXML値から新しいXMLを構築する
のは、私は与えられた列に当社のデータベーステーブルに格納されているこのXMLブロブを持っているとしましょう:
<root>
<header>
<id>1</id>
<name id="foo">Name</name>
</header>
<body>
<items>
<addItem>
<val>1</val>
</addItem>
<observeItem>
<val>2</val>
</observeItem>
</items>
</body>
</root>
私が取得したいこれは基本的には上記文書構造を再作成するだけのものを含めることですitems
子供、例えばので:私はちょうどobserveItem
記録に興味を持っていた場合(items
要素が子どもの数に制限はありませんが、私は唯一のこれまでの単一のものに興味があるでしょう
<root>
<header>
<id>1</id>
<name id="foo">Name</name>
</header>
<body>
<items>
<observeItem>
<val>2</val>
</observeItem>
</items>
</body>
</root>
それら)。
私はSELECT @XML.query('//items/child::*[2]')
のような何かを行うことができますが、特定の子アイテムを取得することができますが、どのようにそれらの子の1つだけのクエリで完全な元のドキュメントを構築するでしょうか?
あなたは構造から子を削除するだけですか?よりダイナミックにする必要がありますか? –
@ MasterYodaはよりダイナミックにする必要があり、実際には、それぞれの子どものためにこの構造を構築する可能性があります。この全努力は、何かがキャッシュから脱落するようなエッジケースをサポートすることに過ぎず、報告目的でこの「アイテム」固有の構造をオンザフライで構築する必要があります。 –