我查看了用于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>
非常感谢您的任何建议!
答案 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;