2016-11-13 15 views
1

如何使用SQL Server 2008在每個XML節點中設置參數?獲取每個XML節點的值並將其設置爲參數

我新的SQL和我有這樣

Set @xml='<root><name>John </name><age>8</age></root>' 

我需要設置節點<name><age>的值參數的XML數據。例如:

Set @name='get value of node <name>' 
Set @age='the value of <age>' 

這可能嗎?謝謝!

+0

您想在幾個字符串中替換「」和「」的任何實例,存儲在變量中的XML中的相應元素值...正確?或者,您是否想要獲取XML中的* any *元素的元素值,並用這些字符串中的這些標記的任何*發生替換? –

回答

2

如果我正確地得到這個結果,你會得到一個XML中的參數鍵值對。你試圖實現的是將值讀入擬合變量。試着這樣說:

DECLARE @xml XML; 
SET @xml='<root><name>John </name><age>8</age></root>'; 

DECLARE @name NVARCHAR(100); 
DECLARE @age INT; 

SET @[email protected]('(/root/name)[1]','nvarchar(max)'); 
SET @age [email protected]('(/root/age)[1]','int'); 

SELECT @name,@age; 

如果你需要從一個變量的名稱查詢中值,您可以使用此:

DECLARE @nodeName NVARCHAR(100)='name'; 
SET @[email protected]('(/root/*[local-name()=sql:variable("@nodeName")])[1]','nvarchar(max)'); 

的中心思想是使用一個XQuery -expression (/root/*[local-name()=sql:variable("@nodeName")])[1]到選擇第一個節點的值,其中元素的名稱與給定的參數相同

+0

*「我需要在參數*中設置節點,的值,」這些參數我認爲他是指'@ name'和'@ age'變量。我將其解讀爲:用變量中的元素值替換變量中的每個''和''。但我可能是錯的。 –

+1

@TT。那麼,我不知道......你所說的句子在我看來就像*我想從''或''讀取值,並將其轉換爲變量*。我拿這個* Set @ name ='get value of node '*就像我把它放在上面...我們會看到:-) – Shnugo

+0

是的,它可以用兩種方式解釋。 –

相關問題