Я использую что-то вроде этого
select MaterialID from MaterialThicknessRange MTR inner join
dbo.TransformCSVToTable('1,2,15') IDs on MTR.ThiknessRangeID = IDs.ID
, где dbo.TransformCSVToTable - это пользовательская функция для преобразования строки csv в таблицу из одного столбца.Ниже приведен образец такой функции
ALTER FUNCTION [dbo].[fn_IntegerParameterListFromString]
(
@IntegerParameterList varchar(max)
)
RETURNS @result TABLE (IntegerID int)
AS
begin
declare @temp table (IntegerID int)
declare @s varchar(max), @s1 varchar(10)
declare @len int
set @len =len(@IntegerParameterList)
set @s = @IntegerParameterList
if (right(@s,1)<>',') set @s = @s +','
while @s<>''
begin
set @s1 = substring(@s,1,charindex(',',@s)-1)
if (isnumeric(@s1)= 1)
insert @result (IntegerID) Values ( Cast(@s1 as int))
if (CHARINDEX(',',@s)>0)
begin
set @s = substring (@s, charindex(',',@s)+1, @Len)
end
else
begin
if isnumeric(@s) = 1
insert @result (IntegerID) Values ( Cast(@s as int))
set @s = ''
end
end
return
end