CREATE function dbo.usp_split_long_text ( @text nvarchar(max), @line_len int ) returns @table table ( Line nvarchar(4000) ) begin declare @nextString nvarchar(max) declare @nextLine nvarchar(4000) declare @pos int declare @pattern nvarchar(100) -- Assume pattern would be found with maximum length of characters set @pattern = '%[, ]%' set @nextString = '' set @nextLine = '' set @pos = patindex(@pattern, @text) while (@pos <> 0) begin set @nextString = substring(@text, 1, @pos) if len(@nextLine + @nextString) > @line_len begin insert into @table (Line) values (@nextLine) set @nextLine = @nextString end else begin set @nextLine = @nextLine + @nextString end set @text = substring(@text, @pos + 1, len(@text)) set @pos = patindex(@pattern, @text) end if len(@nextLine + @text) > 0 begin if len(@nextLine + @text) > @line_len begin insert into @table (Line) values (@nextLine) insert into @table (Line) values (@text) end else begin insert into @table (Line) values (@nextLine + @text) end end return end