XML フィールド タイプを含む SQL SERVER 2012 テーブルがあるとします。含めることができるレコードは次のとおりです。
問題を次のように単純化しました。
レコード 1:
ID_FIELD='nn1'
XML_FIELD=
<KNOWN_NAME_1>
<UNKNOWN_NAME1>Some value</UNKNOWN_NAME1>
<UNKNOWN_NAME2>Some value</UNKNOWN_NAME2>
... Maybe more ...
</KNOWN_NAME_1>
レコード 2:
ID_FIELD='nn2'
XML_FIELD=
<KNOWN_NAME_2>
<UNKNOWN_NAME1>Some value</UNKNOWN_NAME1>
<UNKNOWN_NAME2>Some value</UNKNOWN_NAME2>
... Maybe more unknown fields ...
</KNOWN_NAME_2>
非xmlを出力したい:
UNKNOWN_NAME1 | UNKNOWN_NAME2 | ETC
-----------------------------------
Some Value Some value
既知のルート値 (つまり、KNOWN_NAME_1) の場合
つまり、ノードの値を新しくした場合(私はしません)、できました
SELECT
XMLData.Node.value('UNKNOWN_NAME1[1]', 'varchar(100)') ,
XMLData.Node.value('UNKNOWN_NAME2[1], 'varchar(100)')
FROM FooTable
CROSS APPLY MyXmlField.nodes('//KNOWN_NAME_1') XMLData(Node)
-- WHERE SOME ID value = 'NN1' (all XML records have a separate id)
すべて問題ありませんが、ノード名を知らなくても、すべてのノード (不明な数量) に対してこれを実行したいと考えています。ルートにはノードのみが含まれ、それ以上深くなることはありません。
これはSQLで可能ですか?
私はこれを見てきましたが、それを実装するのに十分な権利を得ることができるとは思えません.