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

标签 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/> > 的文本节点值为“到期日”的 <DataType/ 文本节点?

最佳答案

试试这个:

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

您选择任意 <Data>具有 <DataType>Expiry Date</DataType> 的节点,对于该节点,您选择它的 <Value>内部文本。

关于xml - SQL Server 2008 XML 查询方法 - 在另一个 text() 值存在的地方检索 text() 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3838612/

相关文章:

java - XJC 生成的类存在问题

java - 将一个 xml 文件中的元素添加到新 xml 文件时出错

html - 以本地语言显示内容 : R

c# - XElement with LINQ 在特定节点后添加节点

sql - 处理 200000 多条记录时查询非常非常慢

sql - 在该范围内每天将 "From"和 "To"日期列扩展到 1 行

php - 内存限制和非常大的 XML 文件

sql-server - SQL Server Express 2008 r2 上的全文搜索功能在哪里?

sql - 无法在函数MS SQL中声明变量

tsql - 需要一些 tSQL 巫术 : SQL Update Based on Running Total