请考虑以下事项:
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/
文本节点。是“到期日”?
答案 0 :(得分:12)
试试这个:
SELECT
@xml.value('(//Data[DataType="Expiry Date"]/Value/text())[1]', 'varchar(50)')
您选择具有<Data>
的任何<DataType>Expiry Date</DataType>
节点,并为该节点选择<Value>
内部文本。