Along the lines of what GilaMonster said I pass strings that I need to use in "Where in" quite a bit. This is what I use:
I have this funciton that I got off the web somewhere:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE FUNCTION [dbo].[DelimitedStringToTable](@String varchar(8000), @Delimiter char(1))
returns @temptable TABLE (items varchar(8000))
as
begin
declare @idx int
declare @slice varchar(8000)
select @idx = 1
if len(@String)<1 or @String is null return
while @idx!= 0
begin
set @idx = charindex(@Delimiter,@String)
if @idx!=0
set @slice = left(@String,@idx - 1)
else
set @slice = @String
if(len(@slice)>0)
insert into @temptable(Items) values(@slice)
set @String = right(@String,len(@String) - @idx)
if len(@String) = 0 break
end
return
end
GO
I use it like this:
declare @myVar varchar(50)
set @myVar = '500, 510, 5201, 580, 630, 460, 470, 480, 490'
when ProdGrpCode in (Select * from dbo.DelimitedStringToTable(@myVar,',')
The first parameter is the string to parse and the second in the character that is the delimiter. It’s the equivilant of selecting where in a sub select of a table.