T-SQL разрезал XML на части - PullRequest
       77

T-SQL разрезал XML на части

0 голосов
/ 15 декабря 2009

у меня есть стол

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.

Как мне это сделать?

Ответы [ 2 ]

1 голос
/ 15 декабря 2009

это работает? Запрос использует первую строку xml_data

declare @x2 xml
select top 1 @x2=xml_data.query('Profile/Languages') 
from Profiles
1 голос
/ 15 декабря 2009

Посмотрите на что-то вроде этого

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