T-SQL将XML切成碎片

时间:2009-12-15 13:44:49

标签: xml tsql xquery

我有一张桌子

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 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

这有用吗?该查询使用第一行的xml_data

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