Если ваш ввод разделен точкой с запятой, вы можете просто заменить эти точки с запятой на ', '
и обернуть их '
, чтобы сформировать действительный список значений:
DECLARE @sampleInput NVARCHAR(MAX) = 'Filename.xlsx;ABC7798;;Completed'
DECLARE @Query NVARCHAR(MAX)
SET @Query = 'SELECT FK_QueueItem_ItemTagTransaction FROM dbo.ItemTagTransactions WHERE TagValue IN ('
+ CONCAT('N''', REPLACE(@sampleInput, ';', ''',N'''), '''')
+ ')'
PRINT @Query
Будет выведено:
SELECT FK_QueueItem_ItemTagTransaction FROM dbo.ItemTagTransactions WHERE TagValue IN (N'Filename.xlsx',N'ABC7798',N'',N'Completed')
Если вы хотите выполнить запрос и сохранить результаты для дальнейшей обработки, создайте временную таблицу:
CREATE TABLE #results
(
FK_QueueItem_ItemTagTransaction INT -- adjust the
);
INSERT INTO #results
EXEC sp_executesql @Query
Если у вас есть функция разделения строк, которая возвращает таблицу, то это еще проще, вы просто идете с
SELECT FK_QueueItem_ItemTagTransaction
INTO #results -- for further processing
FROM dbo.ItemTagTransactions
WHERE TagValue IN (SELECT Value
FROM dbo.mySplitStringFunction(@sampleInput))