Просто еще один вариант с использованием небольшого XML и CROSS APPLY
Пример
Declare @YourTable table (id int,SomeCol varchar(max))
Insert Into @YourTable values
(1,'xy w12,jwwx , mpp w,a n p ,234567')
Select A.ID
,char1 = substring(RetVal,1,1)
,char2 = substring(RetVal,2,1)
,char3 = substring(RetVal,3,1)
,char4 = substring(RetVal,4,1)
,char5 = substring(RetVal,5,1)
,char6 = substring(RetVal,6,1)
,char7 = substring(RetVal,7,1)
,char8 = substring(RetVal,8,1)
From @YourTable A
Cross Apply (
Select RetSeq = Row_Number() over (Order By (Select null))
,RetVal = B.i.value('(./text())[1]', 'varchar(max)')
From (Select x = Cast('<x>' + replace((Select replace(SomeCol,',','§§Split§§') as [*] For XML Path('')),'§§Split§§','</x><x>')+'</x>' as xml).query('.')) as A
Cross Apply x.nodes('x') AS B(i)
) B
Возвращает
ID char1 char2 char3 char4 char5 char6 char7 char8
1 x y w 1 2
1 j w w x
1 m p p w
1 a n p
1 2 3 4 5 6 7