SQL Server 2008 XML Query метод - получить значение text (), если существует другое значение text ()? - PullRequest
9 голосов
/ 01 октября 2010

Обратите внимание на следующее:

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

Возвраты:

Expiry Date

Вместо того, чтобы извлекать текстовый узел <DataType/>, как я могу получить текстовый узел <Value/>, где текстзначение узла <DataType/> равно «Дата истечения»?

1 Ответ

12 голосов
/ 01 октября 2010

Попробуйте это:

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

Вы выбираете любой узел <Data>, который имеет <DataType>Expiry Date</DataType>, и для этого узла вы выбираете <Value> внутренний текст.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...