Как передать несколько значений в параметр? - PullRequest
1 голос
/ 22 мая 2019

Я пытаюсь передать одну или несколько переменных ввода в моем операторе выбора

Я пытался использовать оператор IN

DECLARE @LOANKIND VARCHAR(100)
SET @LOANKIND = 'Payables - Loan,Payables - Lines of Credit'
SELECT * from Table
WHERE LOANKIND.KIND_DESC IN (@LOANKIND)

Все мои возможные значения:

Кредиторская задолженность - Кредит, Кредиторская задолженность - Кредитные линии, Кредиторская задолженность - Возмещаемый грант, Кредиторская задолженность - Грант, Кредиторская задолженность - Облигации, Кредиторская задолженность - Гарантия, Дебиторская задолженность - Кредит, Дебиторская задолженность - Кредитные линии, Дебиторская задолженность - Возмещаемая сумма гранта, Дебиторская задолженность - Гарантия

Ответы [ 2 ]

1 голос
/ 22 мая 2019

Вы можете использовать динамический запрос для этого. Как ниже:

DECLARE @sql nvarchar(max)
DECLARE @LOANKIND VARCHAR(100)
SET @LOANKIND = '''Payables - Loan'', ''Payables - Lines of Credit'''
SET @sql = 'SELECT * from Table WHERE LOANKIND.KIND_DESC IN (' + @LOANKIND + ')'

SP_EXECEUTESQL @sql
0 голосов
/ 22 мая 2019

Другой способ.

Если у вас SQL 2016+, вы можете использовать STRING_SPLIT. В противном случае вы можете скачать DelimitedSplit8K .

-- Sample Data
DECLARE @Table TABLE (KIND_DESC VARCHAR(100));
INSERT  @Table(KIND_DESC) VALUES ('Payables - Pizza'),('Payables - Loan'),('Payables - Lines of Credit');

-- Solution
DECLARE @LOANKIND VARCHAR(100) = 'Payables - Loan,Payables - Lines of Credit'

SELECT * 
FROM @Table AS LOANKIND
JOIN STRING_SPLIT(@LOANKIND,',') AS s
ON   LOANKIND.KIND_DESC = s.[value];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...