2011-07-06 5 views
0

내가 에 매개 변수의 (1,2)을 변경할 때 나를변환에 실패

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

하지만 '선택을 위해 내가이 쿼리와 잘 작동이 가입자에서 SBS_SubListId SBS_SubscriberId = 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,''); 

반환 곳 다음과 같습니다

varchar 값 '1,2,4,5'를 데이터 유형 int로 변환 할 때 변환이 실패했습니다.

누군가 필요한 경우 여기에 내 테이블 스키마를 게시 할 수도 있습니다. 덕분에

답변

0

이 쉼표로 구분 된 값을 쉼표로 구분 한 다음 converrsion을 적용해야합니다.

+0

너는 맞다. 그러나 나는 왜 이것을해야만하는지 알고 싶다. – rahularyansharma

+0

변환을 적용 할 때 컴파일러에서 '75'라는 정수를 정수 75로 변경하므로 요소 목록에서 ','이 발견되면 정수로 변환 할 수 없습니다 ... 그 이유 ... –

0

당신의 하위 쿼리가 하나의 정수가 아닌 "1,2,4,5"항목을 반환하는 것으로 의심됩니다. 이 중 하나를 사용하여 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,''); 

는 텍스트로 서브 쿼리의 결과를 처리하는 그런 식으로.

관련 문제