No, you will have to do a LIKE
CREATE TABLE #test(
ID int,
[type] varchar(255),
[size] varchar(255)
);
insert into #test VALUES(1, '15; 16; 17;', '4; 8;')
select * from #test where [type] like '%15%'
Returns
ID type Size
1 15; 16; 17; 4; 8;
Or you could combine an IN statement with a Split function:
Usage
declare @val varchar(255);
set @val = 15
select * from #test t where @val in (select Value from [dbo].udf_Split(t.[type], ';') as i)
Function
CREATE Function [dbo].[udf_Split]
(
@DelimitedList nvarchar(max)
, @Delimiter nvarchar(2)
)
RETURNS TABLE
AS
RETURN
(
With CorrectedList As
(
Select Case When Left(@DelimitedList, Len(@Delimiter)) <> @Delimiter Then @Delimiter Else '' End
+ @DelimitedList
+ Case When Right(@DelimitedList, Len(@Delimiter)) <> @Delimiter Then @Delimiter Else '' End
As List
, Len(@Delimiter) As DelimiterLen
)
, Numbers As
(
Select TOP( Coalesce(DataLength(@DelimitedList)/2,0) ) Row_Number() Over ( Order By c1.object_id ) As Value
From sys.columns As c1
Cross Join sys.columns As c2
)
Select CharIndex(@Delimiter, CL.list, N.Value) + CL.DelimiterLen As Position
, Substring (
CL.List
, CharIndex(@Delimiter, CL.list, N.Value) + CL.DelimiterLen
, CharIndex(@Delimiter, CL.list, N.Value + 1)
- ( CharIndex(@Delimiter, CL.list, N.Value) + CL.DelimiterLen )
) As Value
From CorrectedList As CL
Cross Join Numbers As N
Where N.Value <= DataLength(CL.List) / 2
And Substring(CL.List, N.Value, CL.DelimiterLen) = @Delimiter
)
Returns
ID type Size
1 15; 16; 17; 4; 8;