Just realised this is limited to strings of 2045 chars. This version will go further:
DECLARE @csv VARCHAR(255)
SET @csv = 'gvfgmgm,f,a,cls,pcl,r,o,fhhh,h'
;
with s(start) as
(
SELECT distinct charindex(',',','+@csv+',',p)
FROM
(
select * from
(
select row_number() over (order by m1.number) p from master..spt_values m1,master..spt_values m2
) z
where p <=len(@csv)+2) x
),
chunks(chunk) as
(
select
substring(@csv,start,(select min(start) from s as s2 where s2.start>s.start)-start-1)
from s
where start<len(@csv)+2
)
select * from chunks