SQL Server 2008 XML查询方法 - 检索另一个text()值存在的text()值?

时间:2010-10-01 11:11:12

标签: xml sql-server-2008

请考虑以下事项:

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/>&gt;的<DataType/文本节点。是“到期日”?

1 个答案:

答案 0 :(得分:12)

试试这个:

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

您选择具有<Data>的任何<DataType>Expiry Date</DataType>节点,并为该节点选择<Value>内部文本。