2013-07-16 28 views
3

我在SQL中很新,並且陷入了一個非常常見的情況。我有一個嵌套的孩子作爲輸入參數的XML在我的存儲過程如何從SQL中檢索xml中的所有值

<XML> 
    <Id>1</Id> 
    <Age>1</Age> 
    <Address>Test</Address> 
    . 
    . 
    <Days> 
     <long>1</long> 
     <long>2</long> 
     <long>3</long> 
     <long>7</long> 
    </Days> 
    </XML> 

我能夠通過

Id = t.Xml.value('(./Id)[last()]','int')

挑XML標籤內的數據,但我不知道如何挑選所有長XML/Days內的值。我試過

long = t.UserXml.value('.','int') 

並且它將所有的值返回爲1237,但是這並不能解決我的問題。我需要不同行中的值,而長值需要插入另一個表中。

請讓我知道相同的可能解決方案。 感謝

回答

1

解決辦法對sqlserver的天可能是

DECLARE @XML XML 
SET @XML='<XML> 
    <Id>1</Id> 
    <Age>1</Age> 
    <Address>Test</Address> 
    <Days> 
     <long>1</long> 
     <long>2</long> 
     <long>3</long> 
     <long>7</long> 
    </Days> 
    </XML>' 

SELECT 
    x.y.value('text()[1]', 'int') as xx 
FROM @xml.nodes('XML/Days/long') x(y) 
相關問題