Musakkhir Sayyed
Musakkhir Sayyed

Reputation: 7170

How to get child element and attribute value with condition from xml data in sql server?

How to get child value and its attribute value with condition in sql server.? How to get this

<CheckoutAttribute ID="9">
<CheckoutAttributeValue><Value>26</Value></CheckoutAttributeValue> 
CheckoutAttributeID CheckoutAttributeValue
        9                    26

from following xml data.

<Attributes>
<CheckoutAttribute ID="4">
<CheckoutAttributeValue><Value>18</Value></CheckoutAttributeValue>
</CheckoutAttribute>
<CheckoutAttribute ID="6">
<CheckoutAttributeValue><Value>22</Value></CheckoutAttributeValue>
<CheckoutAttributeValue><Value>23</Value></CheckoutAttributeValue>
</CheckoutAttribute>
<CheckoutAttribute ID="9">
<CheckoutAttributeValue><Value>26</Value></CheckoutAttributeValue>
<CheckoutAttributeValue><Value>27</Value></CheckoutAttributeValue>
</CheckoutAttribute>
<CheckoutAttribute ID="1">
<CheckoutAttributeValue><Value>1</Value></CheckoutAttributeValue>
</CheckoutAttribute>
</Attributes>

Upvotes: 0

Views: 1244

Answers (1)

manderson
manderson

Reputation: 891

CREATE TABLE #tempTable ( id INT IDENTITY(1,1), xmlDataTest xml)
INSERT INTO #TempTable ( xmlDataTest)
VALUES ('<Attributes>
<CheckoutAttribute ID="4">
<CheckoutAttributeValue><Value>18</Value></CheckoutAttributeValue>
</CheckoutAttribute>
<CheckoutAttribute ID="6">
<CheckoutAttributeValue><Value>22</Value></CheckoutAttributeValue>
<CheckoutAttributeValue><Value>23</Value></CheckoutAttributeValue>
</CheckoutAttribute>
<CheckoutAttribute ID="9">
<CheckoutAttributeValue><Value>26</Value></CheckoutAttributeValue>
<CheckoutAttributeValue><Value>27</Value></CheckoutAttributeValue>
</CheckoutAttribute>
<CheckoutAttribute ID="1">
<CheckoutAttributeValue><Value>1</Value></CheckoutAttributeValue>
</CheckoutAttribute>
</Attributes>')

SELECT r.value('@ID','int') AS CheckoutAttributeID
        , r.query('data(CheckoutAttributeValue/Value)[1]') AS CheckoutAttributeValue
FROM #tempTable
CROSS APPLY xmlDataTest.nodes('/Attributes/CheckoutAttribute') AS x(r)
WHERE
r.value('@ID','int') = 9 

DROP TABLE #tempTable

Upvotes: 1

Related Questions