加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在tsql中查询xml列

发布时间:2020-12-16 08:08:01 所属栏目:百科 来源:网络整理
导读:我有一个表T1,在SQL Server 2008上有一个XML列EventXML。我想查询某个节点包含特定值的所有行。更好的是,我想检索不同节点中的值。表T1: T1: EventID,int EventTime,datetime EventXML,XML 这里是一个示例XML层次结构: Event Indicator NameGDP/Name /In
我有一个表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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读