Quantcast
Viewing all articles
Browse latest Browse all 6

Answer by Nathan Skerl

Heres my first take, though Id like to see this done using a set based approach. Ill keep at it.

Interesting problem!

declare @Txt    varchar(max),
    	@Limit	int

set @Txt = 'This is a long sentence and I want to split it into multiple sentences of 25 character each with out splitting a word into multiple lines'
set @Limit = 25

;with cte_DoIt
as  ( select  substring(@Txt, 0, ((@Limit+1)-charindex(' ', reverse(left(@Txt + ' ',@Limit))))) [Chunk],
    			stuff(@Txt, 1, ((@Limit+1)-charindex(' ', reverse(left(@Txt + ' ',@Limit)))), '') [Swap]
    	union all
    	select	substring(Swap, 0, (@Limit+1) - charindex(' ', reverse(left(Swap + ' ', @Limit)))),
    			stuff(Swap, 1, ((@Limit+1)-charindex(' ',reverse(left(Swap + ' ',@Limit)))), '')
    	from	cte_DoIt
    	where	len(Swap) > 0
    )
select Chunk, len(Chunk) [length]
from cte_DoIt

Viewing all articles
Browse latest Browse all 6

Trending Articles