sql - 在 SQL Server 中计算 XML 中的非空节点数

标签 sql sql-server xml

我需要计算所有非空的b节点(所以结果应该是2)。

<a>
  <b>1</b>
  <b/>
  <b>g</b>
</a>

我正在使用下面的代码,但这会返回所有节点的计数(包括空节点)。

select top 1  rc.XmlContent.value('count(//a/b)', 'int') from Table rc

最佳答案

如果您使用 //a/b/text() 而不仅仅是 //a/b,那么您得到的计数为 2

DECLARE @x XML= '<a><b>1</b><b/><b>g</b></a>';
SELECT @x.value('count(//a/b/text())', 'int');

关于sql - 在 SQL Server 中计算 XML 中的非空节点数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48403182/

相关文章:

sql - 我们如何在Hadoop中截断空格后的文本?

mysql - 在多个连接表和相关表中查找特定结果

c# - Xml 序列化后删除空 xmlns =""

c# - 将具有多个元素的 XML 反序列化为单个 C# 对象

java - 安卓。如何捕捉键盘隐藏的时刻?

mysql - 不等于子字符串数组的地方

sql - 在 SQL 表中的文本字符串中查找换行符?

sql-server - 将 Id 与 Sql Server 中的逗号分隔值进行比较

asp.net - Visual Studio 高级查询生成器 MySql 在表名称前添加 “def.”

sql - SUM 的 MAX 和 TOP 在 View 中的使用