如何在tsql中查询xml列

前端之家收集整理的这篇文章主要介绍了如何在tsql中查询xml列前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个表T1,在sql Server 2008上有一个XML列EventXML。我想查询某个节点包含特定值的所有行。更好的是,我想检索不同节点中的值。表T1:
T1:
   EventID,int
   EventTime,datetime
   EventXML,XML

这里是一个示例XML层次结构:

<Event>
   <Indicator>
      <Name>GDP</Name>
   </Indicator>
   <Announcement>
      <Value>2.0</Value>
      <Date>2012-01-01</Date>
   </Announcement>
</Event>

>如何找到与“GDP”相关的所有行指标;
>如何获得“GDP”的所有值指标;

这个怎么样?
SELECT 
    EventID,EventTime,AnnouncementValue = t1.EventXML.value('(/Event/Announcement/Value)[1]','decimal(10,2)'),AnnouncementDate = t1.EventXML.value('(/Event/Announcement/Date)[1]','date')
FROM
    dbo.T1
WHERE
    t1.EventXML.exist('/Event/Indicator/Name[text() = "GDP"]') = 1

它将找到所有/ Event / Indicator / Name等于GDP的行,然后它将显示< Announcement> /< Value>和<公告> /< Date>为这些行。

SQLFiddle demo

猜你在找的XML相关文章