2017-05-23 61 views
0

的XML看起來是這樣的:解析XML在SQL Server中,返回表格式

<Attributes> 
<ProductAttribute ID="92"> 
    <ProductAttributeValue> 
     <Value>225</Value> 
    </ProductAttributeValue> 
</ProductAttribute> 
<ProductAttribute ID="536"> 
    <ProductAttributeValue> 
     <Value>227</Value> 
    </ProductAttributeValue> 
</ProductAttribute> 

我需要

ID - Value 
92 - 225 
536 - 227 

以表格的形式。

是否可以直接從查詢或存儲過程或函數獲取此值?

+0

[MS文檔](https://docs.microsoft.com/en-us/sql/relational- databases/xml/xml-data-sql-server)有關於XML數據和SQL Server的文章,您可能會發現它很有用。 –

+0

你檢查了文檔嗎?他們有關於存儲和解析XML,查詢,轉換等的完整章節。您是否遇到特定的問題? –

+0

我已經檢查過,但無法在表結構中添加與我想要的結果相同的查詢。 –

回答

0

你可以使用value()nodes方法用於XML

DECLARE @xml XML = N'<Attributes> 
<ProductAttribute ID="92"> 
    <ProductAttributeValue> 
     <Value>225</Value> 
    </ProductAttributeValue> 
</ProductAttribute> 
<ProductAttribute ID="536"> 
    <ProductAttributeValue> 
     <Value>227</Value> 
    </ProductAttributeValue> 
</ProductAttribute> 
</Attributes>' 

SELECT ID = x.t.value('(./@ID)[1]','int'), 
     Value = x.t.value('(./ProductAttributeValue/Value)[1]','int') 
FROM @xml.nodes('/Attributes/ProductAttribute') AS x(t) 

返回

ID Value 
--------- 
92 225 
536 227 
+0

謝謝...這是工作... –

+0

不客氣,@HiteshVaghasiya – TriV