我正在尝试计算“颜色”节点的出现次数,但到目前为止还没有成功。
以下是我到目前为止所尝试的内容。
如果我有以下逻辑:
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)
我收到以下错误:
Msg 2389,Level 16,State 1,Line 50
XQuery [value()]:'value()'需要单例(或空序列),找到类型为'xdt:untypedAtomic *'的操作数
答案 0 :(得分:19)
这将计算1
的颜色节点数。
select @MyXML.value('count(/SampleXML/Colors)', 'int')
这将计算Colors
中5
的行数。
select @MyXML.value('count(/SampleXML/Colors/*)', 'int')
答案 1 :(得分:1)
select @MyXML.value('count(/SampleXML/Colors)', 'INT') AS 'Count'