我正在尝试统计“颜色”节点的出现次数,但至今未成功。
以下是我迄今为止所做的尝试。
如果我有以下逻辑:

DECLARE @MyXML XML
SET @MyXML = '<SampleXML>
<Colors>
<Color1>White</Color1>
<Color2>Blue</Color2>
<Color3>Black</Color3>
<Color4 Special="Light">Green</Color4>
<Color5>Red</Color5>
</Colors>
<Fruits>
<Fruits1>Apple</Fruits1>
<Fruits2>Pineapple</Fruits2>
<Fruits3>Grapes</Fruits3>
<Fruits4>Melon</Fruits4>
</Fruits>
</SampleXML>'

SELECT
count(a.b.value('Colors','varchar(10)')) AS Color1
FROM @MyXML.nodes('SampleXML') a(b)

我得到以下错误:
消息2389,级别16,状态1,行50
xquery[value()]:“value()”需要一个单变量(或空序列),找到的操作数类型为“xdt:untypedatomic*”

最佳答案

这将计算1的颜色节点数。

select @MyXML.value('count(/SampleXML/Colors)', 'int')

这将计算Colors中的行数,即5
select @MyXML.value('count(/SampleXML/Colors/*)', 'int')

关于sql - 如何计算SQL XML中节点的出现次数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12587466/

10-13 07:43