16

「Colors」ノードの出現回数をカウントしようとしていますが、これまでのところ成功していません。

以下は私がこれまでに試したことです。

次のロジックがある場合:

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*'のオペランドが見つかりました

4

2 に答える 2

48

これは、であるColorsノードの数をカウントします1

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

これにより、がである行の数がカウントされColorsます5

select @MyXML.value('count(/SampleXML/Colors/*)', 'int')
于 2012-09-25T16:57:59.130 に答える
6
select @MyXML.value('count(/SampleXML/Colors)', 'INT') AS 'Count'
于 2012-09-25T16:51:40.253 に答える