NerdishByNature

Eine MSSQL Split Funktion

Mal was anderes als Silverlight. Eine kleine Split-Funktion für den Microsoft SQL-Server, die einen String anhand eines Delimiters trennt und eine Tabelle zurück gibt. Und damit ich sie selbst nicht immer bei mir suchen muss hier und jetzt gepostet. Nicht zum ersten und wahrscheinlich auch nicht zum letzten mal zu finden in den unergründlichen Weiten des Internetz.

CREATE  FUNCTION [dbo].[fn_Split](@text VARCHAR(8000), @delimiter VARCHAR(20) = ' ')
RETURNS @Strings TABLE
(
  position INT IDENTITY PRIMARY KEY,
  value VARCHAR(8000)
)
AS
BEGIN

DECLARE @index INT
SET @index = -1

--SET @text = REPLACE(RTRIM(LTRIM(@text)),' ', '')

WHILE (LEN(@text) > 0)
  BEGIN
    SET @index = CHARINDEX(@delimiter , @text) 

    IF (@index = 0) AND (LEN(@text) > 0)
      BEGIN
        INSERT INTO @Strings VALUES (@text)
          BREAK
      END
    IF (@index > 1)
      BEGIN
        INSERT INTO @Strings VALUES (LEFT(@text, @index - 1))
        SET @text = RIGHT(@text, (LEN(@text) - @index))
      END
    ELSE
      SET @text = RIGHT(@text, (LEN(@text) - @index))
    END
  RETURN
END