SQL - 从XML类型返回特定部分

时间:2015-11-11 10:48:42

标签: sql xml

我查看了用于XML提取的stackoverflow,但它们都没有帮助这种xml格式。我尝试过从这里使用许多不同的,但没有一个返回我需要的东西。我认为问题是它不在节点中,但XML文件是整行的NOTE值。我很困惑:(

我有一个名为XMLTable的表,有两列

- ID (int)
- Annotations (xml)

我内心地将XMLTable与基于ID的另一个表连接起来,我还需要从XML字段中选择日期部分('标签日期')

SELECT s.*, x.Date
FROM Statement s
INNER JOIN XMLTable x
ON s.ID = x.ID

你能帮我从xml表中选择Date吗? (使用SQL 2012)

XML格式:

<ANNOTATIONS>
  <NOTE Label="Date">2015-01-13T09:24:58.903</NOTE>
  <NOTE Label="Type">ABC</NOTE>
  <NOTE Label="Status">Done</NOTE>
  <NOTE Label="Unit">KG</NOTE>
  <NOTE Label="GUI">aa11123-zxc6-1111xxxxx</NOTE>
  <NOTE Label="GUIID">10</NOTE>
</ANNOTATIONS>

非常感谢您的任何建议!

2 个答案:

答案 0 :(得分:2)

这可以帮到你:

SELECT s.*, x.Annotations.value('(/ANNOTATIONS/NOTE[@Label="Date"])[1]','datetime') AS AnnotationDate
FROM Statement s
INNER JOIN XMLTable x
ON s.ID = x.ID

答案 1 :(得分:2)

SELECT  s.*,
        x.Annotations.value('(/ANNOTATIONS/NOTE[@Label="Date"])[1]',
                            'datetime') AS MyDate
FROM    [Statement] s
INNER JOIN XMLTable x ON s.ID = x.ID;