Я пытаюсь передать несколько строк в один параметр под названием «@Portfolio» и использую предложение LIKE. Это возможно? Что-то вроде этого.
Declare @AsOfDate varchar(10)
Declare @PID varchar(5)
Declare @Portfolio varchar(20)
Declare @sqlCommand varchar(max)
Set @AsOfDate = '04/30/2018'
Set @Portfolio = 'Treasury Investment,CASH,Derivatives,Wholesale Funding'
Set @PID = 'I.A.6'
...etc...
WHERE ((Tgt_DO.PID like ' + '''' + @PID + '''' + ' AND Tgt_DO.Portfolio like ' + '''' + @Portfolio + '''' + ' And Tgt_DO.AsOfDate = ' + '''' + @AsOfDate + '''' + '))'
Я использую SQL Server 2008.
Это не динамический SQL. Вы просто объединяете значения статическим способом.
Если у вас есть параметры в списке или массиве, вы можете построить оператор SQL, используя состояние while или подобное, чтобы создать IN (...).
Аааа! Пункт IN. Понятно. Спасибо!!
@ ryguy72, как и "TheI mpaler", сказал, что это не динамический sql, игнорируйте его, если вы уже заметили, что xD


Чтобы уточнить комментарии ... поскольку вы используете LIKE, в некоторых случаях вам необходимо объединить %
where
Tgt_DO.PID like '%' + @PID + '%'
and Tgt_DO.Portfolio like '%' + @Portfolio + '%'
and Tgt_DO.AsOfDate = @AsOfDate
Этот мог возвращает непредвиденные результаты, поскольку @Portfolio представляет собой строку, разделенную запятыми. Я бы использовал Табличный параметр или разделил их на временную таблицу или табличную переменную с помощью разделителя, например этот ответ
вы можете построить свой запрос, используя
IN, если вы хотите увидеть один результат