Za předpokladu, že máte svůj XML v SQL Server proměnné s názvem @XML , můžete použít nativní XQuery podporu v SQL Server 2005 a novějších, abyste to udělali mnohem elegantněji a efektivněji:
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)
To mi dává výstup

S operátory XQuery, jako je .nodes() nebo .value() , můžete snadno „skartovat“ dokument XML na relační data a uložit je podle potřeby.
První volání @xml.nodes('//ConditionSet') získá "pseudo" tabulku pro každý odpovídající uzel - takže každý <ConditionSet> uzel bude vrácen v "pseudo" tabulce XT jako sloupec XC a pak mohu snadno získat atributy (nebo prvky XML) z tohoto fragmentu XML pomocí metod XQuery, jako je .value() .
Nebo mohu dokonce uchopit seznam poduzlů <Condition> pro každý z těchto <ConditionSet> uzly - pomocí CROSS APPLY s druhým voláním .nodes()