gpt4 book ai didi

使用 XML 标记的 SQL 查询 XML 列?

转载 作者:搜寻专家 更新时间:2023-10-30 20:26:47 25 4
gpt4 key购买 nike

我有一个表格,列中包含一些不同的信息。名为 CorrelationInfo 的一列是 XML,如下所示:

<Backlog xmlns:xsi = yadda yadda yadda>
<Correlations>
<MemCorrelation EID = "1234">
</MemCorrelation>
</Correlations>
</Backlog>

我需要一个查询来计算 EID = "1234" 的行数。

请注意:查询越高效越好。有数千行要查询。

我自己尝试过一些东西,但我仍在学习。这是我的作品:

Declare @myEID varchar(MAX)
SET @myID = "1234"

SELECT COUNT(1)
FROM TABLE t
WHERE t.CorrelationInfo.exist('/Backlog/Correlations/MemCorrelation[text()= @myID') =1

我有一些查询 XML 的经验,但从来没有像 MemCorrelation EID = "1234"...

这样的 XML 标记中的 where 条件

这是针对 SQL Server 2008 的。

最佳答案

你可以这样做:

    DECLARE @myID  int = 1234;
SELECT COUNT(*)
FROM TABLE t
WHERE t.CorrelationInfo.exist('/Backlog/Correlations/MemCorrelation[@EID=sql:variable("@myID")]') = 1

如果存在一个元素 MemCorrelation 的属性 EID 的值等于 sql 变量@myID 的值,则 Exists 将返回 1

为了提高性能,我建议至少在表上创建一个主 XML 索引并尝试使用辅助索引。

进一步阅读引用:

sql:variable() function

predicates in path expressions

XML Indexes

关于使用 XML 标记的 SQL 查询 XML 列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30057615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com