Я использую хранимую процедуру и передаю ей строку с запятой следующим образом:
Apple,Banana,Orange
Я хочу использовать эту строку внутри предложения IN, но я не хочу использовать
SELECT value
FROM STRING_SPLIT(@MyStr, ',')
Как я могу сгенерировать строку, которую я могу использовать, например
SELECT *
FROM MyTable
WHERE Fruit IN (@MyStr)
@Faisal попробуйте сначала разделить строку по разделителю, а затем выполните поиск подзапроса. Дайте мне знать, если это не сработает!
SQL Server не поддерживает замену макросов. Чтобы выполнить, как вы хотите, вам понадобится ДИНАМИЧЕСКИЙ SQL.


Просто используйте подзапрос:
select *
from mytable
where fruit in (select value from STRING_SPLIT(@MyStr, ','));
В более старых версиях SQL Server вы можете использовать like:
select *
from mytable
where ',' + @MyStr + ',' like '%,' + fruit + ',%';
упоминалось, что я не хочу использовать string_split
@Faisal - этот ответ работает, учитывая код в вопросе, так почему вы хотите усложнить его и исключить технически обоснованный подход к решению вашей проблемы?
Поскольку STRING_SPLIT доступен только с SQL 2016. Скорее всего, они используют более старую версию сервера. В качестве альтернативы можно было бы использовать динамический SQL.
Он дал вам версию для старого sql, которая не использует string_split.
попробую старую версию
да сработало отлично