Несколько целочисленных строк в запятую с разделителями для предложения In - PullRequest
0 голосов
/ 22 января 2019

Я могу получить значения ссуд, которые представляют собой строки целых чисел, в список с разделителями-запятыми.Однако я не могу преобразовать этот список для использования в предложении In

Declare @LoanNums AS NVARCHAR(Max) = ''
select
   DISTINCT
   @LoanNums =  
    stuff((
        select ',' + CONVERT(NVARCHAR(max), u.LoanId)
        from #tmpLoan u
        where u.LoanId = u.LoanId
        order by u.LoanId
        for xml path('')
    ),1,1,'')
from #tmpLoan

Теперь выводится 132254986,132255002,132255018,249736374,249892143, что, впрочем, выглядит нормально, когда я помещаю эту переменную в предложение IN

DECLARE @SQL AS NVARCHAR(MAX) = ''
SELECT @SQL = 'Select * from myOtherTable Where LoanId in (''' + @LoanNums + ''')'

если выводит этот SQL

Select * from myOtherTable WHERE LoanId in
 ('132254986,132255002,132255018,249736374,249892143')

и я получаю сообщение об ошибке

Conversion failed when converting the varchar value  
'132254986,132255002,132255018,249736374,249892143' to data type int

Как создать правильный отформатированный список с разделителями-запятыми для правильного использования в предложении IN?

1 Ответ

0 голосов
/ 22 января 2019

не Select * from myOtherTable WHERE LoanId in ('132254986,132255002,132255018,249736374,249892143') должно быть

Select * from myOtherTable WHERE LoanId in
  ('132254986','132255002','132255018','249736374','249892143');
             ^ ^         ^ ^         ^ ^         ^ ^ 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...