Feature #3942 » fn_SplitString.sql
| 1 | CREATE FUNCTION dbo.fn_SplitString | 
|---|---|
| 2 | (
 | 
| 3 | @List NVARCHAR(MAX), | 
| 4 | @Delimiter CHAR(1) | 
| 5 | )
 | 
| 6 | RETURNS @Result TABLE (Value NVARCHAR(500)) | 
| 7 | AS
 | 
| 8 | BEGIN
 | 
| 9 | DECLARE @Pos INT, @NextPos INT, @Value NVARCHAR(500) | 
| 10 |  | 
| 11 | SET @List = LTRIM(RTRIM(@List)) | 
| 12 | SET @Pos = 1 | 
| 13 |  | 
| 14 | WHILE @Pos <= LEN(@List) | 
| 15 |     BEGIN
 | 
| 16 | SET @NextPos = CHARINDEX(@Delimiter, @List, @Pos) | 
| 17 | IF @NextPos = 0 | 
| 18 | SET @NextPos = LEN(@List) + 1 | 
| 19 |  | 
| 20 | SET @Value = LTRIM(RTRIM(SUBSTRING(@List, @Pos, @NextPos - @Pos))) | 
| 21 |  | 
| 22 | IF @Value <> '' | 
| 23 | INSERT INTO @Result (Value) VALUES (@Value) | 
| 24 |  | 
| 25 | SET @Pos = @NextPos + 1 | 
| 26 |     END
 | 
| 27 |  | 
| 28 |     RETURN
 | 
| 29 | END
 |