2012-10-09 105 views
0

我有以下查詢,它允許我從指定列中的一行xml獲取xml數據。如何從XML獲取具有未知行數的XML屬性

但是,產品可以有1個UPC孩子,或很多。

如何更改我的查詢以返回產品的所有現有子項?

DECLARE @MyXML XML 
SET @MyXML = 
    (SELECT ProductsXML 
    FROM Products 
    WHERE ProductId= 1) 
SELECT 
    a.b.value('Product[1]/UPC[1]/@upccode','DATE') as UPC, 
    a.b.value('Product[1]/UPC[1]/@dateadded','DATE') as DateAdded 
    FROM @MyXML.nodes('xml')a(b) 

回答

0
DECLARE @MyXML XML; 
SET @MyXML = 
    N'<xml> 
     <Product> 
      <UPC upccode="1237" dateadded="10/9/2012"/> 
      <UPC upccode="1236" dateadded="10/8/2012"/> 
      <UPC upccode="1235" dateadded="10/7/2012"/> 
      <UPC upccode="1234" dateadded="10/6/2012"/> 
     </Product> 
    </xml>'; 

SELECT 
    a.b.value('@upccode','int') as UPC, 
    a.b.value('@dateadded','date') as DateAdded 
FROM 
    @MyXML.nodes('xml/Product/UPC')a(b); 
+0

welp。那很簡單。謝謝 – RJP