Это невозможно, так как стоит, насколько я знаю.
Альтернативой является использование динамического SQL (т. Е. Генерирование в коде предложения WHERE
), но это плохая практика, если вы действительно не заботитесь о безопасности, удобстве обслуживания или удобочитаемости!
Другая крайность заключается в написании табличной функции для использования на сервере БД, которая принимает ваш параметр @S
.
Этот параметр должен быть строкой с разделителями, которую можно затем проанализировать в функции, используя конструкции T-SQL WHILE
и BEGIN ... END
, вставляя каждый элемент из вашей строки в временную таблицу.
Наконец, предложение WHERE
вашего запроса станет примерно таким:
WHERE myField in (SELECT myTempColumn from [dbo].[myParsingFunction] (@S))