MS SQL: funzione per lo split di una stringa

Creato il 14 marzo 2012 da Andreafortuna @AndyF

Ecco una comoda funzione che trasforma una stringa in una tabella, ‘splittandola’ utilizzando un delimitatore:

CREATE function [dbo].[Split] (     
     @string nvarchar(4000),     
     @delimiter nvarchar(10) 
) returns @table table (
[Value] nvarchar(4000)
)

begin     
 declare @nextString nvarchar(4000)     
 declare @pos int, @nextPos int     
 declare @commaCheck nvarchar(1)    
 
 set @nextString = ''     
 set @commaCheck = right(@string, 1)     
 set @string = @string + @delimiter     
 set @pos = charindex(@delimiter, @string)     
 set @nextPos = 1     
 while (@pos <> 0)     
       begin     
       set @nextString = substring(@string, 1, @pos - 1)     
       insert into @table ([Value]) values (@nextString)     
       set @string = substring(@string, @pos + 1, len(@string))     
       set @nextPos = @pos     
       set @pos = charindex(@delimiter, @string)     
end     
return