2010-04-08 14 views
0

我有了一个完整的XML像列的表:T-SQL XML查询,如何将匹配节点分成单独的行?

<parent> 
    <child> 
     <name>Sally</name> 
    </child> 
    <child> 
     <name>Bobby</name> 
    </child> 
</parent> 

我想所有孩子的名字提取到单独的行。我想要的结果集看起来像:

Sally 
    Bobby 

但是,如果我这样做:

SELECT data.query('data(//parents/child/name)') FROM stuff 

我回来单行,看起来像

Sally Bobby 

我在做什么错与XPath?

编辑:不是真正的模式或数据,只是一个例子。另外,我不能简单地分割空间。

+0

注意,我通过发现你的问题//元.stackexchange.com/questions/53911/a-more-interesting-user-specific-unanswered-feed所以不要忘记投票:) – 2010-06-17 03:20:10

回答

0

在这里你去:HTTP:

create table #t (data xml) 


insert #t values (' 
<parent> 
    <child> 
     <name>Sally</name> 
    </child> 
    <child> 
     <name>Bobby</name> 
    </child> 
</parent> 
') 


insert #t values (' 
<parent> 
    <child> 
     <name>Fred</name> 
    </child> 
    <child> 
     <name>Bill</name> 
    </child> 
</parent> 
') 


select C.* from #t 
cross apply 
(select name.value('name[1]', 'varchar(255)') as [Name] 
    from data.nodes('//parent/child') as c(name)) as C