2010-10-01 4 views
9

S'il vous plaît considérer les points suivants:Méthode SQL Query SQL Server 2008 - récupère la valeur text() lorsqu'une autre valeur text() existe?

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()') 

Retours:

Expiry Date 

Plutôt que de récupérer le nœud texte <DataType/> comment puis-je récupérer le nœud de texte <Value/> où la valeur de nœud de texte de <DataType/> est « Date d'expiration "?

Répondre

12

Essayez ceci:

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

Vous sélectionnez un nœud <Data> qui a <DataType>Expiry Date</DataType>, et pour ce nœud, vous sélectionnez c'est <Value> le texte intérieur.

+0

Spot on - Merci Marc –

Questions connexes