我需要计算所有非空的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/