申し訳ありませんが、トピックがあまり明確ではない場合は、ここで目的を達成する必要があります。私は、各ユーザのために友人の数(XMLノードのすなわち、数)を取得する必要がありますSQL Serverは列のXML値をテーブルに解析します(行ごとに)
user_id | friends
==============================
75 | <friend name="bob" /><friend name="joe" />
76 | <friend name="bill" /><friend name="bob" />
77 | <friend name="sam" /><friend name="gary" /><friend name="john" />
:私はそうのようなテーブルを持っています。 結果のテーブルには、次のようになります。
user_id | number_of_friends
==============================
75 | 2
76 | 2
77 | 3
次のSQLは、一度に1つの列のためにそれを行うことができますが、私は一度にすべての列のためにそれを行うするかどうかはわかりません。
DECLARE @x XML;
SELECT @x = pval
FROM [mytable]
WHERE uid=75 AND pkey='roster';
SELECT COUNT(t.c.value('@name', 'NVARCHAR(MAX)')) AS number_of_friends
FROM @x.nodes('//friend') t(c);
これは表の結果:
number_of_friends
=================
2
私はこのエラーを受け取ります: '列" friends "またはユーザ定義関数を見つけられなかったり、" friends.value "を集めることができません。名前があいまいです。 – sme
'friends'はXMLデータ型かvarcharですか?もしvarchar - あなたは 'CAST(xml friends).value( 'count(/ friend)'、 'integer')をnumber_of_friends'として使用する必要があります。 – gofr1
ありがとう、お友達の列をXMLにキャストすることはやりました。それは今働く – sme