我在 SQL Server 2008 上有一个表 T1,其中包含一个 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
equals GDP
然后它会显示<Announcement>/<Value>
and <Announcement>/<Date>
对于那些行。
See SQLFiddle 演示 http://www.sqlfiddle.com/#!3/aaf6f/1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)