sql - 在 SQL Server 中检索具有相同前缀的所有 XML 元素

标签 sql sql-server xml tsql xquery-sql

我有一个 XML 文件,其格式类似于:

<XML>
   <Field1>100</Field1>
   <Field2>200</Field2>
   <Field3>300</Field3>
   <Test>400</Test>
</XML>

我需要编写一个查询来获取所有以 Field 开头的元素值。所以给定上面的 XML,结果应该是

FieldVal
--------
100     
200     
300

我已经尝试了以下但它不起作用:

Select 
    xc.value('text()', 'int')
From 
    @XMLData.nodes('/XML/[starts-with(name(), ''Field'')]') As xt(xc)

注意:我很清楚,如果我重新格式化我的 XML,这个任务可以很容易地完成,但遗憾的是我无法控制 XML 的格式。

最佳答案

一种方式是

declare @XMLData xml ='<XML>
   <Field1>100</Field1>
   <Field2>200</Field2>
   <Field3>300</Field3>
   <Test>400</Test>
</XML>'

Select 
    xc.value('.', 'int')
From @XMLData.nodes('/XML/*') As xt(xc)
WHERE xc.value('local-name(.)', 'varchar(50)') LIKE 'Field%'

关于sql - 在 SQL Server 中检索具有相同前缀的所有 XML 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39756282/

相关文章:

sql-server - 根据 row_number() 更新列

mysql - SQL Select 其中 user1 有多个,而 user2 没有

sql - 报表生成器 3.0

sql - MySQL IN 与 LIKE

c# - SQL 查询只运行一次

sql - 在 SQL 中查询一个杂乱的表

java - 尝试了解 Android 中的 XML Pull 解析器 - Java

java - 如何引用从其他来源导入的 bean?

python - 如何在Django Rest Framework中获取xml格式

sql - 从 DBIx::Class 中的多个表中选择