统计SQL中XML的子标签数量

Count the number of sub tags from XML in SQL

XML 从代码发送到 SQL 服务器。我的 XML 看起来像这样:

Declare @MainXML XML=
    '<root>
    <a>JJ</a>
    <a>KK</a>
    </root>'

根据上面的 xml,我想将 2 存储为 SQL 中第 1 列下的子元素 "a" 的计数。

Column1
-------
   2

你能帮我解决这个问题吗?

如果您使用的是 mssql server,那么您可以利用 OPENXML 支持。您可以通过在解析的 XML:

上使用 SELECT 来获取 a 节点的计数
Declare @MainXML XML =
    '<root>
    <a>JJ</a>
    <a>KK</a>
    </root>'

SELECT COUNT(MainXML.A.value('.', 'VARCHAR(100)')) AS Cnt
FROM @MainXML.nodes('root/a') MainXML(A)

我会用 xpath:

select @MainXML.query('count(root/a)')

sql fiddle demo