As t-sql is not really designed for string handling, I would be inclined to look at writing a CLR function. You could try google for this but it is well beyond a forum post.If you really want to use t-sql, you could try recursion if the length of the notes is not too long. Otherwise you will have to use iteration.The following is an outline example of recursion:CREATE TABLE #t(	Acct int NOT NULL	,Note nvarchar(MAX) NOT NULL);INSERT INTO #tVALUES (1, 'Blanket Lien Filed, account returned to Provider. Blah Blah will continue to follow and pursue lien payment. Called Pt Blahat xxx-xxx-xxxx. Left voice mail. Voicemail greeting did not state a name. Called Pt at xxx-xxx-xxxx. Left voice mail.Voicemail greeting did not state a name.');WITH RowNotesAS(	SELECT Acct		,1 AS NoteRow		,LEFT(Note, SplitIndex) AS Note		, SUBSTRING(Note, SplitIndex + 1, 1000000) AS RestNote	FROM	(		SELECT Acct, Note			,CASE				WHEN NoteLen < 250 THEN NoteLen				ELSE NoteLen + 1 - PATINDEX('%[^0-9,A-Z,a-z,-]%', REVERSE(LEFT(Note, 250)))			END AS SplitIndex		FROM		(			SELECT Acct, Note				,LEN(LEFT(Note, 250)) AS NoteLen			FROM #t		) D1	) D	UNION ALL	SELECT Acct		,NoteRow		,LEFT(Note, SplitIndex) AS Note		, SUBSTRING(Note, SplitIndex + 1, 1000000) AS RestNote	FROM	(		SELECT Acct, Note, NoteRow			,CASE				WHEN NoteLen < 250 THEN NoteLen				ELSE NoteLen + 1 - PATINDEX('%[^0-9,A-Z,a-z,-]%', REVERSE(LEFT(Note, 250)))			END AS SplitIndex		FROM		(			SELECT Acct, RestNote As Note				,NoteRow + 1 AS NoteRow				,LEN(LEFT(RestNote, 250)) AS NoteLen			FROM RowNotes			WHERE LEN(RestNote) > 0		) D1	) D)SELECT Acct, NoteRow, NoteFROM RowNotesORDER BY Acct, NoteRow;