Click here to Skip to main content
15,880,469 members
Articles / Programming Languages / T-SQL
Tip/Trick

Split a String with Specific Separator Character

Rate me:
Please Sign up or sign in to vote.
5.00/5 (2 votes)
18 Jun 2014CPOL 8.8K   2   2
T-SQL scripts: Write a table function to split a string with specific separator character

Introduction

Write a table function to split a string with specific separator character.

Example:

SQL
SELECT * FROM dbo.Split('john, peter, mary', ',')

And result:

  • john
  • peter
  • mary
SQL
CREATE FUNCTION [dbo].[Split](@array NVARCHAR(MAX),@separator char(1))
RETURNS @tbl TABLE (string nvarchar(128) NOT NULL) AS
BEGIN
      DECLARE @pos      int,
              @textpos  int,
              @chunklen smallint,
              @str      nvarchar(MAX),
              @tmpstr   nvarchar(MAX),
              @leftover nvarchar(MAX)

      SET @textpos = 1
      SET @leftover = ''
      WHILE @textpos <= datalength(@array) / 2
      BEGIN
         SET @chunklen = 4000 - datalength(@leftover) / 2
         SET @tmpstr = ltrim(@leftover + substring(@array, @textpos, @chunklen))
         SET @textpos = @textpos + @chunklen

         SET @pos = charindex(@separator, @tmpstr)
         WHILE @pos > 0
         BEGIN
            SET @str = substring(@tmpstr, 1, @pos - 1)
            INSERT @tbl (string) VALUES(convert(nvarchar(20), @str))
            SET @tmpstr = ltrim(substring(@tmpstr, @pos + 1, len(@tmpstr)))
            SET @pos = charindex(@separator, @tmpstr)
         END

         SET @leftover = @tmpstr
      END

      IF ltrim(rtrim(@leftover)) <> ''
         INSERT @tbl (string) VALUES(convert(nvarchar(Max), @leftover))

      RETURN
   END
GO

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Technical Writer Softech
Vietnam Vietnam
/* Life runs on code */

Comments and Discussions

 
SuggestionEasy way to split string Pin
Member 107271924-Jul-14 0:15
Member 107271924-Jul-14 0:15 
Though the traditional method of using stored procedure solves the purpose but it is inefficient.

You could use the method as described at following link

http://jatindersingh.blogspot.in/2014/07/easy-way-to-split-string.html[^]
Hope it Helps
Jatinder Singh
http://jatindersingh.blogspot.com

SuggestionI have something similar . Check if the below code is works for you. Pin
Raju_B19-Jun-14 4:16
Raju_B19-Jun-14 4:16 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.