2010-10-01 7 views
9

Proszę wziąć pod uwagę następujące:SQL Server 2008 Metoda zapytania XML - pobiera wartość text(), gdy istnieje inna wartość 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()') 

Powroty:

Expiry Date 

Zamiast pobierania węzeł <DataType/> tekst jaki sposób można pobrać węzeł <Value/> tekstu, gdy wartość węzeł tekst <DataType/> jest „datą wygaśnięcia "?

Odpowiedz

12

Spróbuj tego:

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

wybrać dowolną <Data> węzeł, który ma <DataType>Expiry Date</DataType>, i dla tego węzła, wybrać to <Value> wewnętrzny tekst.

+0

Spot on - Dzięki Marc –

Powiązane problemy