2009-12-15 3 views
0

J'ai une tableXML coupé T-SQL en morceaux

create table Profiles 
(id int, 
xml_data xml 
) 

qui a une colonne xml et pour chaque ligne i ont la même xml qui ressemble à ceci:

<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> 

Je veux Prenez juste la partie langues de ce fichier XML et placez-la dans une autre variable XML.

Comment faire cela?

Répondre

1

est-ce que cela fonctionne? La requête utilise les données xml_data de la première ligne

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

Jetez un oeil à quelque chose comme ça

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') 

Vous pouvez aussi le faire pour une colonne d'une table.

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