0
我有一個XML結構如下所示:插入到關係表中的數據從XML字段
SET @TheXML =
<MailingCompany>
<Mailman>
<Name>Jamie</Name>
<Age> 24 </Age>
<Letter>
<DestinationAddress> 440 Mountain View Parade </DestinationAddress>
<DestinationCountry> USA </DestinationCountry>
<OriginCountry> Australia </OriginCountry>
<OriginAddress> 120 St Kilda Road </OriginAddress>
</Letter>
</Mailman>
</MailingCompany>
基本上我與提取書寫的查詢每個郵遞員和字母的兒童,並插入值到關係表中,它看起來像以下:
INSERT INTO dbo.[Mailman]
SELECT
NULLIF(t.value('Name[1]','varchar(100)'),'') as Name,
NULLIF(t.value('Age[1]','varchar(10)'),'') as Age
FROM @TheXML.nodes('MailingCompany/Mailman') as MailmanTemp(t)
SET @MailPersonFK = SCOPE_IDENTITY();
INSERT INTO dbo.[Letter]
SELECT
NULLIF(t.value('DestinationAddress[1]','varchar(100)'),'') as DestinationAddress,
NULLIF(t.value('DestinationCountry[1]','varchar(100)'),'') as DestinationCountry,
NULLIF(t.value('OriginCountry[1]','varchar(100)'),'') as OriginCountry,
NULLIF(t.value('OriginAddress[1]','varchar(100)'),'') as OriginAddress
@MailPersonFK AS MailmanID
FROM @TheXML.nodes('MailingCompany/Mailman/Letter') as LetterTemp(t)
我的問題是,我只想當節點「名稱」中填充數據插入到表郵差。與節點'DestinationAddress'一起插入Letter的信息也是如此。
它也可能是有用的注意到,父節點並不總是要MailingCompany,並且郵差可以有很多字母。
謝謝大家!
完美!非常感謝你! – Mark