Могу ли я передать несколько строк одному параметру в динамическом SQL?

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

вы можете построить свой запрос, используя IN, если вы хотите увидеть один результат

LONG 24.05.2018 19:44

Это не динамический SQL. Вы просто объединяете значения статическим способом.

The Impaler 24.05.2018 19:44

Если у вас есть параметры в списке или массиве, вы можете построить оператор SQL, используя состояние while или подобное, чтобы создать IN (...).

The Impaler 24.05.2018 19:45

Аааа! Пункт IN. Понятно. Спасибо!!

ASH 24.05.2018 19:46

@ ryguy72, как и "TheI mpaler", сказал, что это не динамический sql, игнорируйте его, если вы уже заметили, что xD

LONG 24.05.2018 19:48
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
5
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

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

Другие вопросы по теме