2010-10-01 11 views
9

perche i seguenti:Metodo query SQL di SQL Server 2008: recupera il valore text() dove esiste un altro valore text()?

DECLARE @xml XML 
SET @xml = 
'<Capture> 
<Data><DataType>Card Number</DataType><Value>1234567898765</Value></Data> 
<Data><DataType>Expiry Date</DataType><Value>1010</Value></Data> 
</Capture>' 

SELECT @xml.query('//*[text()="Expiry Date"]/text()') 

Returns:

Expiry Date 

Invece di recuperare il nodo <DataType/> testo come posso recuperare il nodo <Value/> testo in cui il valore del nodo testo <DataType/> è "Data di scadenza "?

risposta

12

Prova questa:

SELECT 
    @xml.value('(//Data[DataType="Expiry Date"]/Value/text())[1]', 'varchar(50)') 

si seleziona qualsiasi nodo <Data> che ha la <DataType>Expiry Date</DataType>, e per quel nodo, si seleziona è <Value> testo interno.

+0

Spot on - Grazie Marc –

Problemi correlati