2013-04-15 95 views
1

我有以下格式化的XML:T-SQL查詢XML數據

<ROOT> 
<table1> 
    <row ID="1".... \> 
</table1> 
<table2> 
    <row ID="1".... \> 
</table2> 
... 
</ROOT> 

我想產生一個返回的查詢:

TableName 
table1 
table2 
... 

換言之,每個節點下的值

+0

對不起,所需的輸出格式不正確。基本上我只想要一個ROOT節點下的所有值(table1,table2等)的列表。 – user2284233

+0

您使用的是哪個版本的SQL Server? – harpo

回答

2
DECLARE @data XML; 

SET @data = 

N' 
<root> 
<table1> 
    <row ID="1"/> 
</table1> 
<table2> 
    <row ID="1"/> 
</table2> 
</root>'; 


SELECT 
    T.myAlias.value('fn:local-name(..)', 'nvarchar(50)') as ParentOf_RowElement_Name 
FROM 
    @data.nodes('//row') AS T(myAlias) 

; 



ParentOf_RowElement_Name 
-------------------------------------------------- 
table1 
table2 

OR

DECLARE @data XML; 

SET @data = 

N' 
<root> 
<table1> 
    <row ID="1"/> 
</table1> 
<table2> 
    <row ID="1"/> 
</table2> 
</root>'; 


SELECT 
    T.myAlias.value('fn:local-name(.)', 'nvarchar(50)') as ChildOf_RootElement_Name 
FROM 
    @data.nodes('//root/*') AS T(myAlias) 
; 





ChildOf_RootElement_Name 
-------------------------------------------------- 
table1 
table2