首页 > 解决方案 > 如何使用 SQL Server 计算 XML 列的元素

问题描述

我对 SQL Server 真的很陌生,

我想计算 XML 列中的元素。

这里简要解释一下我的问题。我第一次创建临时表是因为我需要使用另一个表中的另一个列来过滤 XLM 列中的元素。到这里我没有问题。为此,我编写了以下查询:

SELECT  a.columnINT AS AC, b.columnXML AS BC
INTO #table1
FROM dbo.a left join dbo.b
ON dbo.b.id = dbo.a.id

在此之后,我创建了一个包含两列的临时表。一个是整数列,第二个是每行都有一个 XML 代码的列。

这里是 XML 代码的一部分

<x>
  <x1>
    <x2>1.10.100.1000</x2>
  </x1>
</x>

我尝试编写此查询以计算x22000 万行,但不起作用。

SELECT COUNT(BC.query('/x1/x2').value('.', 'varchar(20)')) AS XML
FROM #table1
where AC = 10

是否可以在 XML 元素中进行计数,还是在概念上是错误的?

有人,拜托,能告诉我我哪里错了吗?

先感谢您。

弗朗切斯科

标签: sqlsql-server

解决方案


如果我正确地阅读了这些线路,你在这之后吗?

SELECT COUNT(X.X2.value('(./text())[1])', 'varchar(15)')) AS X2
FROM #table1 T1
     CROSS APPLY T1.BC.nodes('/x/x1/x2') X(X2)
WHERE AC = 10;

推荐阅读