在SQL中捕获具有相同节点名称的多个XML字符串
在XML字符串世界中穿行——我遇到了这个问题 所以我有两个非常相似的XML字符串-唯一的问题是-它们在节点中有不同的信息 XML字符串1:在SQL中捕获具有相同节点名称的多个XML字符串,sql,sql-server,xml,nodes,Sql,Sql Server,Xml,Nodes,在XML字符串世界中穿行——我遇到了这个问题 所以我有两个非常相似的XML字符串-唯一的问题是-它们在节点中有不同的信息 XML字符串1: <DocumentElement> <Readings> <ReadingID>1</ReadingID> <ReadingDate>2013-12-19T00:00:00-05:00</ReadingDate> <Sys>120</Sys> &
<DocumentElement>
<Readings>
<ReadingID>1</ReadingID>
<ReadingDate>2013-12-19T00:00:00-05:00</ReadingDate>
<Sys>120</Sys>
<Dia>80</Dia>
<PageNumber>4</PageNumber>
<AddedDate>2015-04-17T19:30:22.2255116-04:00</AddedDate>
<UpdateDate>2015-04-17T19:30:22.2255116-04:00</UpdateDate>
</Readings>
<Readings>
<ReadingID>2</ReadingID>
<ReadingDate>2014-01-10T00:00:00-05:00</ReadingDate>
<Sys>108</Sys>
<Dia>86</Dia>
<PageNumber>8</PageNumber>
<AddedDate>2015-04-17T19:32:08.5121747-04:00</AddedDate>
<UpdateDate>2015-04-17T19:32:08.5121747-04:00</UpdateDate>
</Readings>
</DocumentElement>
我完全不知道如何进行这一点-任何和所有的帮助是感激的 假设这些XML位于名为
MyXmlColumn
的XML列中,在名为MyTable
*的表中,您可以尝试以下操作:
SELECT
R.value('ReadingDate[1]', 'DATETIME') as ReadingDate
, R.value('Sys[1]', 'INT') as Sys
, R.value('Dia[1]', 'INT') as Dia
FROM MyTable t
CROSS APPLY t.MyXmlColumn.nodes('/DocumentElement/Readings') as readings(R)
*:下次你应该首先提供这些信息时@FooBun如果它解决了问题,不要忘记回答
Reading Date | Sys | Dia
----------------------------
12/29/2013 | 120 | 80
----------------------------
1/10/2014 | 108 | 86
----------------------------
12/20/2013 | 140 | 70
SELECT
R.value('ReadingDate[1]', 'DATETIME') as ReadingDate
, R.value('Sys[1]', 'INT') as Sys
, R.value('Dia[1]', 'INT') as Dia
FROM MyTable t
CROSS APPLY t.MyXmlColumn.nodes('/DocumentElement/Readings') as readings(R)