私はスカラーxml変数を持っています:
DECLARED @XML xml =
'<rows>
<row>
<column1 attrib="" />
<column2 attrib="" />
</row>
<!-- ... -->
</rows>';
各行のxmlがテーブルの新しいレコードに割り当てられるようにデータを分割したいと思います。
Id | ... | XML
1 | | '<row><column1 attrib="" /><column2 attrib="" /></row>'
2 | | etc.
3 | | etc.
私はxqueryを完全に理解していないので、私が望むことを行う挿入ステートメントを書くのに苦労しています。
INSERT into MyTable( [XML])
SELECT @XML.query('row')
これで、何かが起こっていることがわかりましたが、意図したとおりに実行して複数の新しいレコードを挿入するのではなく、空の文字列を含む単一のレコードを列に挿入しているように見え[XML]
ます。
何が得られないのですか?
明確化
を使用して、各行から内部テキスト、サブ要素、または属性を取得しようとはしていませんvalue(...)
。要素全体をキャプチャして<row>
、タイプの列に保存しようとしていますxml
私は実験しnodes(...)
て思いついた:
INSERT into MyTable([XML])
SELECT C.query('*')
FROM @XML.nodes('rows/row') T(C)
これは私が望むものに近いですが、結果には外部<row>
タグは含まれず、含まれる<column*>
要素のみが含まれます。