2011-07-06 7 views
0

私はにパラメータの(1,2)を変更したときに、私は変換に失敗しました

SELECT STUFF(
(SELECT ','+SLT_SubListName FROM sublists where SLT_SubListId in (1,2) FOR XML PATH('')),1,1,''); 

しかし「を選択するために、私はこのクエリとその作業罰金を持っていますまた、そのは私にエラーを与えて1,2

SELECT STUFF(
(SELECT ','+SLT_SubListName FROM sublists where SLT_SubListId in (select SBS_SubListId from subscriber where SBS_SubscriberId=1 
) FOR XML PATH('')),1,1,''); 

を返すSBS_SubscriberId = 1' 加入者からSBS_SubListId

varchar値 '1,2,4,5'をデータ型intに変換すると変換に失敗しました。

誰かが必要な場合は、ここで自分のテーブルスキーマを投稿することもできます。 ありがとう

答えて

0

これらのカンマ区切りの値をカンマ区切りに分割してからconverbsionを適用する必要があります。

+0

あなたは正しいですが、私はなぜこれをしなければならないのか知りたいですか? – rahularyansharma

+0

変換を適用すると、コンパイラは要素 '75'を整数75に変更するので、要素リストで '、'が見つかると整数に変換できません... thats why ... –

0

私はあなたのサブクエリが整数ではない "1,2,4,5"の1つのエントリを返すと思っています。これらをそれぞれ4行ずつ返す必要があります。

サブクエリの結果を表示している場合は、タイプの違いがあります。

0

あなたのサブクエリはvarchar型を返すしているように見えるので、「1,2,4,5」、あなたは使用してクエリを試すことができます含まれています

SELECT STUFF(
(SELECT ','+SLT_SubListName FROM sublists where CONTAINS((select SBS_SubListId from subscriber where SBS_SubscriberId=1), SLT_SubListId 
) FOR XML PATH('')),1,1,''); 

それがテキストとしてサブクエリからの結果を扱いますこの方法。

関連する問題