2011-08-05 73 views
1

我有一個XML列的表:如何在SQL Server 2008中使用XQuery結果列表作爲關係表?

declare @xmltest xml; 
set @xmltest = 
'<list> 
    <el> <x>1</x> <y>one</y> </el> 
    <el> <x>2</x> <y>two</y> </el> 
    </list>' 

使用XQuery,我可以提取所有X的:

select @xmltest.query('/list/el/x') 

它返回

<x>1</x><x>2</x> 

但是我怎麼提取它們作爲一個SQL表,每行一個x?

更好的是,我該如何將它們作爲一個SQL表提取,並帶有兩列x和y,以便我可以使用SQL對它們進行處理?

謝謝!

回答

1

您可以使用nodes()value()

select 
    N.value('x[1]', 'int') as x, 
    N.value('y[1]', 'varchar(10)') as y 
from @xmltest.nodes('/list/el') as T(N) 

結果:

x   y 
----------- ---------- 
1   one 
2   two 
+0

完美,謝謝! –

+0

再次感謝您的回答。你能推薦一本好書或網站來學習如何有效地在SQL Server中使用XQuery嗎?到目前爲止,我發現MSDN資料非常羅嗦,組織嚴密,而且不必要的複雜。 –

+0

@Stavros - 看看這個答案。 http://stackoverflow.com/questions/6749469/sql-xml-order-processor/6768891#6768891。它包含我用作參考的鏈接。我不知道任何有關SQL Server中XQuery的教程或書籍。 –

相關問題