@XML
という SQL Server 変数に XML があるとします。 、ネイティブ XQuery を使用できます SQL Server 2005 以降でのサポートにより、これをよりエレガントかつ効率的に行うことができます:
DECLARE @XML XML = '...(your XML here).....'
SELECT
RootID = @xml.value('(/Root/@ID)[1]', 'int'),
ConditionSetOperator = XC.value('@Operator', 'varchar(50)'),
ConditionID = XC2.value('@ID', 'int'),
ConditionOperator = XC2.value('@Operator', 'varchar(50)')
FROM
@Xml.nodes('//ConditionSet') AS XT(XC)
CROSS APPLY
xc.nodes('Condition') AS XT2(XC2)
これにより、
の出力が得られます
.nodes()
のような XQuery 演算子を使用 または .value()
、XML ドキュメントをリレーショナル データに簡単に「細分化」し、必要に応じて保存できます。
@xml.nodes('//ConditionSet')
への最初の呼び出し 一致するノードごとに「疑似」テーブルを取得するため、各 <ConditionSet>
ノードは「疑似」テーブル XT
に返されます 列 XC
として .value()
のような XQuery メソッドを使用して、その XML フラグメントから属性 (または XML 要素) を簡単に取得できます。 .
または、サブノード <Condition>
のリストを取得することもできます これらの <ConditionSet>
のそれぞれについて ノード - CROSS APPLY
を使用 .nodes()
への 2 回目の呼び出し