Advertisement
Guest User

chakrit

a guest
Apr 18th, 2009
352
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 0.70 KB | None | 0 0
  1. CREATE FUNCTION dbo.__StringSplit(@src nvarchar(4000), @delim NCHAR(1), @refId INT)
  2.     RETURNS @results TABLE (
  3.         ID INT IDENTITY(1, 1),
  4.         Item nvarchar(4000),
  5.         RefID INT
  6.     )
  7. AS
  8. BEGIN
  9.  
  10.     DECLARE @idx INT
  11.     DECLARE @slice nvarchar(4000)
  12.    
  13.     SELECT @idx = 1
  14.    
  15.     -- splitting loop
  16.     WHILE @idx != 0
  17.     BEGIN
  18.    
  19.         -- Obtain a slice
  20.         SELECT @idx = CHARINDEX(@delim, @src)
  21.         IF @idx != 0
  22.             SELECT @slice = LEFT(@src, @idx - 1)
  23.         ELSE
  24.             SELECT @slice = @src
  25.            
  26.         -- save the slice result
  27.         INSERT INTO @results (Item, RefID) VALUES (@slice, @refId)
  28.        
  29.         -- advance by 1 item further into the src string
  30.         SELECT @src = RIGHT(@src, LEN(@src) - @idx)
  31.        
  32.         IF LEN(@src) = 0
  33.             BREAK
  34.     END
  35.    
  36. RETURN
  37. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement