2013-03-05 37 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