Most split functions that you will find on this forum and elsewhere split based on a delimiter such as comma. If you want to split to fixed length slices, you will need to make slight changes to those (to look for a specific length instead of the delimiter). Here is a quick and dirty way of doing it - probably not the most efficient:CREATE TABLE #tmp (id INT, x NTEXT);INSERT INTO #tmp VALUES (1,REPLICATE('a',45)),(2,REPLICATE('b',22));GODECLARE @sliceLength INT = 10;;WITH cte AS( SELECT 1 lvl, id, LEFT(CAST(x AS VARCHAR(MAX)),@sliceLength) as s, STUFF(CAST(x AS VARCHAR(MAX)),1,@sliceLength,'') AS r FROM #tmp UNION ALL SELECT lvl+1, id, LEFT(r,@sliceLength), STUFF(r,1,@sliceLength,'') FROM cte WHERE r <> '' )SELECT id,s FROM cte ORDER BY id,lvlOPTION (MAXRECURSION 0);GODROP TABLE #tmp;