2010-04-08 10 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