How to Split Comma Separated Values in SQL Server

  1. Create FUNCTION [dbo].[Split_Function]   
  2. (@String varchar(MAX),@ImageNameByUser varchar(MAX)=null, @Delimiter char(1),@QuestionId bigint,@ID1 int)   
  3. returns @temptable TABLE (RightOptions varchar(MAX),NotInUse varchar(MAX),QuestionId bigint,QuestionOptionId bigint,RightAnswerId bigint)   
  4. as   
  5. begin   
  6. declare @idx int   
  7. declare @slice varchar(8000)   
  8.   
  9. ,@slice2 varchar(8000)   
  10. ,@idx2 int   
  11.   
  12. select @idx = 1   
  13. select @idx2 = 1   
  14. if len(@String)<1 or @String is null return   
  15. while @idx!= 0   
  16. begin   
  17. set @idx = charindex(@Delimiter,@String)   
  18. set @idx2 = charindex(@Delimiter,@ImageNameByUser)   
  19. if @idx!=0   
  20. set @slice = left(@String,@idx - 1)   
  21. else   
  22. set @slice = @String   
  23. if @idx2!=0   
  24. set @slice2 = left(@ImageNameByUser,@idx2 - 1)   
  25. else   
  26. set @slice2 = @ImageNameByUser   
  27. --If(IsNull(@ImageNameByUser,'@@')!='@@')   
  28. --if(len(@slice)>0 And len(@slice2)>0 )   
  29. --Else   
  30. if(len(@slice)>0)   
  31. BEGIN   
  32. SET @ID1=@ID1+1   
  33. declare @RightAnsId bigint   
  34. Select @RightAnsId=isnull(QuestionOptionId,0) from tblQuestionOption where OptionDetail = LTRIM(RTRIM(@slice)) And QuestionId=@QuestionId   
  35. insert into @temptable(RightOptions,NotInUse,QuestionId,QuestionOptionId,RightAnswerId)   
  36. values(LTRIM(RTRIM(@slice)),LTRIM(RTRIM(@slice2)),@QuestionId,@RightAnsId,@ID1)   
  37. END   
  38. set @String = right(@String,len(@String) - @idx)   
  39. if len(@String) = 0 break   
  40. set @ImageNameByUser = right(@ImageNameByUser,len(@ImageNameByUser) - @idx2)   
  41. if len(@ImageNameByUser) = 0 break   
  42. end   
  43. return   
  44. end