sql-server - 遵循 XML 模式,重新创建 XML,从中提取数据并将其存储到 SQL 数据库中
问题描述
实际上在这里我有两个问题,但是因为它们密切相关,所以我必须在这里提出它们。我有以下 XML 模式(其中的一部分):
<xs:element name="maaktDeelUitVan" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:choice minOccurs="1" maxOccurs="unbounded">
<xs:element ref="PandRef"/>
</xs:choice>
</xs:complexType>
</xs:element>
现在,基于这个模式,我可以猜测最终的 XML 可能如下所示:
<maaktDeelUitVan>
<PandRef>1</PandRef>
<PandRef>2</PandRef>
</maaktDeelUitVan>
如果是这样,我如何创建 XPath 查询以将 PandRef 设为 2 行?
我试过这个:
SELECT
Tab.Col.query('./PandRef').value('.', 'varchar(100)') AS heeftAlsHoofdadres
FROM @xml.nodes('/maaktDeelUitVan') Tab(Col)
但那是返回 12,我需要 2 行,每行包含来自 PandRef 的值。也许这很简单,但我无法弄清楚。
解决方案
请尝试以下解决方案。
SQL
DECLARE @xml XML =
N'<maaktDeelUitVan>
<PandRef>1</PandRef>
<PandRef>2</PandRef>
</maaktDeelUitVan>';
SELECT c.value('(./text())[1]', 'VARCHAR(20)') AS PandRef
FROM @xml.nodes('/maaktDeelUitVan/PandRef') AS t(c);
输出
+---------+
| PandRef |
+---------+
| 1 |
| 2 |
+---------+
推荐阅读
- mongodb - $ne:比较输入日期和数组中的字段
- c - 写入txt文件
- r - match() 函数不适用于 r 中的两个向量
- mongodb - MongoDB / $或在集合的多个字段中搜索的最佳索引结构是什么?
- error-handling - Youtube dl 无法提取视频数据 't' 不是内部或外部命令、可运行程序或批处理文件
- redux - Redux 工具包可以从额外的 reducer 访问完整状态
- javascript - clearInterval 不能从 setTimeout 内的间隔工作
- neo4j - 启用远程访问 neo4j 4.2 社区版
- qt - 如何在 Qt/Qmake 中使用 Visual Studio 代码?(苹果系统)
- javascript - 来自全局组件的 Vue/Nuxt 访问函数