我有一个表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>为这些行。