2009-12-15 55 views
0

我有一個表T-SQL切XML成片

create table Profiles 
(id int, 
xml_data xml 
) 

有一個XML列,每一行,我有,看起來像這樣相同的XML:

<Profile> 
    <personalInfo> 
     <contactInfo> 
      <firstName>John</firstName> 
      <lastName>Doe</lastName> 
      <address>22 Park Avenue</address> 
      <address2 /> 
      <city>Guilford</city> 
      <state>CT</state> 
      <zip>11221</zip> 
     </contactInfo> 
    </personalInfo> 
    <Languages> 
    <Language> English </Language> 
    <Language> French </Language> 
    <Language> German </Language>   
    <Language> Hungarian </Language> 
    </Languages> 
</Profile> 

我想只取這個XML的語言部分,並把它放在另一個XML變量中。

我該怎麼做?

回答

1

能完成這項工作?查詢使用第一行的xml_data

declare @x2 xml 
select top 1 @x2=xml_data.query('Profile/Languages') 
from Profiles 
1

看一看像這樣

DECLARE @xml XML 

SET @xml = 
'<Profile> 
     <personalInfo> 
      <contactInfo> 
       <firstName>John</firstName> 
       <lastName>Doe</lastName> 
       <address>22 Park Avenue</address> 
       <address2 /> 
       <city>Guilford</city> 
       <state>CT</state> 
       <zip>11221</zip> 
      </contactInfo> 
     </personalInfo> 
     <Languages> 
     <Language> English </Language> 
     <Language> French </Language> 
     <Language> German </Language>   
     <Language> Hungarian </Language> 
     </Languages> 
    </Profile>' 

SELECT @xml.query('Profile/Languages') 

您也可以爲表中的列做到這一點。

SELECT *, 
     xml_data.query('Profile/Languages') 
FROM @Table