ここにEAV構造体(エンティティ属性値)を与える1つの方法があります。
あなたは私だけONE重要な要素を特定する必要が気づくことがあります... ID
は、私は簡単にできるだけ
Declare @XML xml = '
<ITEM id="1" name="Swimmer Head" mesh_name="eq_head_swim" totalpoint="0" type="equip" res_sex="m" res_level="0" slot="head" weight="2" bt_price="0" color="#FFFFFFFF" desc="Part of an everyday swimming outfit" />
<ITEM id="2" name="Boxer Feet" mesh_name="eq_feet_boxer" totalpoint="0" type="equip" res_sex="m" res_level="0" slot="head" weight="2" bt_price="25.00" color="#FFFFFFFF" desc="Somthing for the boxer" />
'
Select ID = r.value('@id','int')
,Item = attr.value('local-name(.)','varchar(100)')
,Value = attr.value('.','varchar(max)')
From @XML.nodes('/ITEM') as A(r)
Cross Apply A.r.nodes('./@*') AS B(attr)
Where attr.value('local-name(.)','varchar(100)') not in ('id')
戻り値を(いくつかの要素を切り捨てし、実証の目的のために2番目の項目を追加しました
)必要に応じて旋回させることが
EDIT -
Declare @XML xml
Select @XML = BulkColumn FROM OPENROWSET(BULK 'C:\Working\SomeXMLFile.xml', SINGLE_BLOB) x;
Select ID = r.value('@id','int')
,Item = attr.value('local-name(.)','varchar(100)')
,Value = attr.value('.','varchar(max)')
From @XML.nodes('/ITEM') as A(r)
Cross Apply A.r.nodes('./@*') AS B(attr)
Where attr.value('local-name(.)','varchar(100)') not in ('id')
あなたがこれをデシリアライズし、テーブルに構造を挿入する方法を求めている、またはあなたがXMLデータ型の列には、このXMLブロブを挿入する方法を求めているファイルからXMLをロードするには? – Siyual
この構造体をテーブルに挿入したいと思います。 –