Ошибка преобразования при преобразовании значения varchar в тип данных int - PullRequest
0 голосов
/ 06 июля 2011

У меня есть этот запрос, и он отлично работает для меня

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

но когда я изменяю входные параметры (1,2) на ', выберите 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.

если кому-то понадобится, я также могу опубликовать схему таблицы здесь. спасибо

Ответы [ 3 ]

0 голосов
/ 06 июля 2011

Я подозреваю, что ваш подзапрос возвращает одну запись "1,2,4,5", которая не является целым числом.Вам нужно, чтобы он возвращал 4 строки с одной из них в каждой.

Если вы делаете это - показываете результаты подзапроса - тогда у вас могут быть различия в типах.

0 голосов
/ 06 июля 2011

Поскольку ваш подзапрос, похоже, возвращает varchar '1,2,4,5', вы можете попробовать запрос, используя CONTAINS:

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,'');

Таким образом он обрабатывает результаты подзапроса как текст.

0 голосов
/ 06 июля 2011

Вы должны сначала разделить эти запятые значения на основе запятой, а затем применить преобразование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...