Использование SQL в запросе для строки, разделенной запятыми

Я использую хранимую процедуру и передаю ей строку с запятой следующим образом:

Apple,Banana,Orange

Я хочу использовать эту строку внутри предложения IN, но я не хочу использовать

SELECT value 
FROM STRING_SPLIT(@MyStr, ',')

Как я могу сгенерировать строку, которую я могу использовать, например

SELECT * 
FROM MyTable 
WHERE Fruit IN (@MyStr)
stackoverflow.com/questions/35620646/…
Lasse Edsvik 25.04.2019 20:28

@Faisal попробуйте сначала разделить строку по разделителю, а затем выполните поиск подзапроса. Дайте мне знать, если это не сработает!

Cowthulhu 25.04.2019 20:31

SQL Server не поддерживает замену макросов. Чтобы выполнить, как вы хотите, вам понадобится ДИНАМИЧЕСКИЙ SQL.

John Cappelletti 25.04.2019 20:35
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
2
3
95
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Просто используйте подзапрос:

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 25.04.2019 20:31

@Faisal - этот ответ работает, учитывая код в вопросе, так почему вы хотите усложнить его и исключить технически обоснованный подход к решению вашей проблемы?

Igor 25.04.2019 20:34

Поскольку STRING_SPLIT доступен только с SQL 2016. Скорее всего, они используют более старую версию сервера. В качестве альтернативы можно было бы использовать динамический SQL.

Robert Sievers 25.04.2019 20:45

Он дал вам версию для старого sql, которая не использует string_split.

Susan 25.04.2019 21:53

попробую старую версию

Faisal 26.04.2019 08:40

да сработало отлично

Faisal 29.04.2019 08:34

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