timcunningham

Untitled

Apr 12th, 2011
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 1.22 KB | None | 0 0
  1. ALTER FUNCTION fnSYS_Split_Comma_Separated_List_Of_Strings_To_String_Table
  2. (
  3.     @strData varchar(8000)
  4.    
  5. )
  6.    
  7. RETURNS @output TABLE (strData varchar(8000))
  8.  
  9. AS
  10.  
  11. BEGIN
  12.  
  13.     declare @intPosition int
  14.     declare @intStart int
  15.     declare @intEnd int
  16.     declare @strPart varchar(8000)
  17.    
  18.     set @strData = replace(@strData,' ,',',')
  19.     set @strData = replace(@strData,', ',',')
  20.     set @strData = @strData + ','
  21.  
  22.     if (charindex(',', @strData) = 1) --if only one value append a , so that it still gets parsed
  23.  
  24.     set @strData = @strData + ','
  25.     set @intPosition = charindex(',', @strData)
  26.  
  27.     insert into @output values (ltrim(rtrim(substring(@strData, 0, @intPosition))))
  28.  
  29.     if charindex(',',@strData) > 0
  30.         begin
  31.  
  32.  
  33.             while ((charindex(',', @strData, @intPosition)) <> 0)
  34.                 begin
  35.  
  36.                     set @intStart = charindex(',', @strData, @intPosition)
  37.                     set @intEnd = charindex(',', @strData, @intStart+1)
  38.                     if (@intEnd = 0)
  39.                         set @intEnd = len(@strData) - @intStart
  40.  
  41.                     set @strPart = ltrim(rtrim(substring(@strData, @intStart+1, abs(@intEnd - @intStart-1))))
  42.                     IF @strPart <> ''
  43.                     insert into @output values (@strPart)
  44.  
  45.                     set @intPosition = charindex(',', @strData, @intPosition) + 1
  46.  
  47.                 end
  48.         end
  49.        
  50.     return
  51.  
  52. END
Advertisement
Add Comment
Please, Sign In to add comment