Dengan asumsi Anda memiliki XML Anda dalam variabel SQL Server yang disebut @XML , Anda dapat menggunakan XQuery asli dukungan di SQL Server 2005 dan yang lebih baru untuk melakukan ini dengan lebih elegan dan efisien:
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)
Ini memberi saya output dari

Dengan operator XQuery seperti .nodes() atau .value() , Anda dapat dengan mudah "menghancurkan" dokumen XML menjadi data relasional dan menyimpannya sesuai kebutuhan.
Panggilan pertama ke @xml.nodes('//ConditionSet') akan mendapatkan tabel "pseudo" untuk setiap node yang cocok - jadi setiap <ConditionSet> node akan dikembalikan dalam tabel "pseudo" XT sebagai kolom XC , dan kemudian saya dapat dengan mudah mengambil atribut (atau elemen XML) dari fragmen XML tersebut menggunakan metode XQuery seperti .value() .
Atau saya bahkan dapat mengambil daftar sub-simpul <Condition> untuk masing-masing <ConditionSet> node - menggunakan CROSS APPLY dengan panggilan kedua ke .nodes()