Можно ли передать несколько строк одному параметру в динамическом SQL? - PullRequest
0 голосов
/ 24 мая 2018

Я пытаюсь передать несколько строк в один параметр с именем '@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.

1 Ответ

0 голосов
/ 24 мая 2018

Для уточнения комментариев ... поскольку вы используете LIKE, в некоторых случаях вам нужно будет констатировать %

where
    Tgt_DO.PID like '%' + @PID + '%'
    and Tgt_DO.Portfolio like '%' + @Portfolio + '%'
    and Tgt_DO.AsOfDate = @AsOfDate

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

...