2015-05-06 111 views
0

編織通過XML字符串世界的方式 - 我碰到過這個問題。在SQL中捕獲多個具有相同節點名稱的XML字符串

所以我有兩個超級相似的XML字符串 - 唯一的問題是 - 它們在節點內部具有不同的信息。

XML字符串1:

<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字符串2:

<DocumentElement> 
<Readings> 
    <ReadingID>1</ReadingID> 
    <ReadingDate>2013-12-20T00:00:00-05:00</ReadingDate> 
    <Sys>140</Sys> 
    <Dia>70</Dia> 
    <PageNumber>10</PageNumber> 
    <AddedDate>2015-04-17T19:30:22.2255116-04:00</AddedDate> 
    <UpdateDate>2015-04-17T19:30:22.2255116-04:00</UpdateDate> 
</Readings> 
</DocumentElement> 

現在,這真的只是一個例子 - 我能有串無限數量的就是這樣的,我會想從中提取數據。在這種情況下,我有兩個字符串,我期待以提取<Sys><Dia><ReadingDate>

我也想在表格中顯示此信息的所有此類信息:

Reading Date | Sys | Dia 
---------------------------- 
12/29/2013 | 120 | 80 
---------------------------- 
1/10/2014 | 108 | 86 
---------------------------- 
12/20/2013 | 140 | 70 

我完全不確定如何繼續這一點 - 任何和所有的幫助表示讚賞!

回答

2

假設這些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) 

SQL Fiddle

*:下一次你應該已經提供了這些信息在第一個地方

+0

@FooBun不要忘記[接受](http://stackoverflow.com/help/someone如果它解決了有問題的問題,那麼答案就是答案 – har07

相關問題