Tuesday, July 24, 2012

Use comma-separated values with IN clause


declare @Ids varchar(20)
declare @seperator varchar(5)
set @Ids ='1,3,5,7,9'
set @seperator = ','

DECLARE @Temp TABLE ( RId bigint)

WHILE (Charindex(@seperator,@Ids)>0)
BEGIN
    INSERT INTO @Temp (RId) values(ltrim(rtrim(Substring(@Ids,1,Charindex(@seperator,@Ids)-1))))

    SELECT  @Ids = Substring(@Ids,Charindex(@seperator,@Ids)+1,len(@Ids)) 
END

INSERT INTO @Temp (RId) values (ltrim(rtrim(@Ids)))


select * from RegDetails where Id in (select RId from @Temp)
delete from @Temp;


Output:

Id     Name  
--------------    
1      Prasad
3      Mahesh
5      Dynesh
7      Amar
9      Sambath