2013-03-05 60 views
1

我有一張儲存在NVARCHAR中的xml表。就是這樣。將SQL Server 2008表列轉換爲XML並彙總xpath值

的XML是什麼樣子

<Container> 
    <Data> 
    <SomeNode>val1</SomeNode> 
    </Data> 
    <Data> 
    <SomeNode>val2</SomeNode> 
    </Data> 
</Container> 

基本上我需要從表中所有XML字符串查詢所有VAL1 ... valX。

到目前爲止,我已經成功地拿出

SELECT CAST(XmlColumn AS XML).query('//SomeNode') FROM ThatTableWithXmlInStrings 

這給了我節點的名單列表。在這裏,我迷失了:我如何將它變成單一的值?

回答

3
select T2.X.value('text()[1]', 'nvarchar(10)') 
from ThatTableWithXmlInStrings 
    cross apply (select cast(XmlColumn as xml)) T1(X) 
    cross apply T1.X.nodes('/Container/Data/SomeNode') as T2(X) 
+0

聖牛!這是堅果,但工作! – durilka 2013-03-05 09:53:10

0

有兩種方法:

  1. 添加文字()函數中的XQuery
  2. 使用節點方法link
+0

你的意思是查詢('// SomeNode /文() ')? ,只是粘val0val1,val2,val3val4這不是我所需要的 – durilka 2013-03-05 09:39:29

+0

對不起,我有其他的想法,嘗試第二種方法,一個是你需要的 – Yohn 2013-03-05 09:44:48