T-SQL中如何统计XML内匹配特定值的节点出现次数
实现方法
完全可以实现,你只需要在原有XPath路径中添加值筛选谓词即可匹配到符合条件的节点再统计数量。
核心统计代码如下:
myXML.value('count(xml1/xml2/Country[text()="United States"])', 'INT')
这里通过[text()="United States"]的谓词规则,仅筛选出节点文本等于United States的Country节点再做计数,返回值改用INT类型更符合计数场景的取值范围。
完整可运行测试示例
你可以直接执行下面的代码验证效果:
DECLARE @myXML XML = ' <xml1> <xml2> <Country>United States</Country> </xml2> <xml2> <Country>Argentina</Country> </xml2> <xml2> <Country>United States</Country> </xml2> </xml1>' -- 输出符合条件的节点数量,示例中返回结果为2 SELECT @myXML.value('count(xml1/xml2/Country[text()="United States"])', 'INT') AS USCountryCount
优化提示
如果你的XML节点值可能存在前后空格的情况,可以用normalize-space()函数处理文本后再匹配,避免空格导致匹配失败:
myXML.value('count(xml1/xml2/Country[normalize-space(text())="United States"])', 'INT')
内容的提问来源于stack exchange,提问作者tsdn
相关产品推荐
相关产品推荐

