xml базовый ответ прост и чист
refer this
DECLARE @S varchar(max),
@Split char(1),
@X xml
SELECT @S = 'ab,cd,ef,gh,ij',
@Split = ','
SELECT @X = CONVERT(xml,' ' +
REPLACE(@S,@Split,' ') + ' ')
SELECT T.c.value('.','varchar(20)'),--retrieve all values at once
T.c.value('(/root/myvalue)[1]','VARCHAR(20)') , --retrieve index 1 only, which is the 'ab'
T.c.value('(/root/myvalue)[2]','VARCHAR(20)'),
T.c.value('(/root/myvalue)[3]','VARCHAR(20)')
FROM @X.nodes('/root/myvalue') T(c)