You can use CROSS APPLYs to unfurl the CSV list:
Schema:
CREATE TABLE ListSubs
([list] varchar(13), [subscribers] varchar(500))
;
INSERT INTO ListSubs
([list], [subscribers])
VALUES
('1', '[email protected],[email protected],[email protected]'),
('2', '[email protected],[email protected],[email protected]')
;
Query:
SELECT
a.list
, a.subscribers
, SUBSTRING(a.subscribers, 1, ISNULL(p1 - 1, LEN(a.subscribers))) sub1
, SUBSTRING(a.subscribers, p1 + 1, ISNULL(p2, LEN(a.subscribers) + 1) - p1 - 1) sub2
, SUBSTRING(a.subscribers, p2 + 1, ISNULL(p3, LEN(a.subscribers) + 1) - p2 - 1) sub3
, SUBSTRING(a.subscribers, p3 + 1, ISNULL(p4, LEN(a.subscribers) + 1) - p3 - 1) sub4
, SUBSTRING(a.subscribers, p4 + 1, ISNULL(p5, LEN(a.subscribers) + 1) - p4 - 1) sub5
, SUBSTRING(a.subscribers, p5 + 1, ISNULL(p6, LEN(a.subscribers) + 1) - p5 - 1) sub6
, SUBSTRING(a.subscribers, p6 + 1, ISNULL(p7, LEN(a.subscribers) + 1) - p6 - 1) sub7
from ListSubs a
CROSS APPLY (select NULLIF(CHARINDEX(',', a.subscribers), 0)) b(p1)
CROSS APPLY (select NULLIF(CHARINDEX(',', a.subscribers, p1 + 1), 0)) c(p2)
CROSS APPLY (select NULLIF(CHARINDEX(',', a.subscribers, p2 + 1), 0)) d(p3)
CROSS APPLY (select NULLIF(CHARINDEX(',', a.subscribers, p3 + 1), 0)) e(p4)
CROSS APPLY (select NULLIF(CHARINDEX(',', a.subscribers, p4 + 1), 0)) f(p5)
CROSS APPLY (select NULLIF(CHARINDEX(',', a.subscribers, p5 + 1), 0)) g(p6)
CROSS APPLY (select NULLIF(CHARINDEX(',', a.subscribers, p6 + 1), 0)) h(p7)
where isnull(a.subscribers,'') != ''
SQLFiddle.
If you want them in individual rows, then you could do this using the same method by splitting everything out in unions:
select
x.list
, x.sub
from (
SELECT
a.list
, SUBSTRING(a.subscribers, 1, ISNULL(p1 - 1, LEN(a.subscribers))) sub
from ListSubs a
CROSS APPLY (select NULLIF(CHARINDEX(',', a.subscribers), 0)) b(p1)
union
SELECT
a.list
, SUBSTRING(a.subscribers, p1 + 1, ISNULL(p2, LEN(a.subscribers) + 1) - p1 - 1) sub
from ListSubs a
CROSS APPLY (select NULLIF(CHARINDEX(',', a.subscribers), 0)) b(p1)
CROSS APPLY (select NULLIF(CHARINDEX(',', a.subscribers, p1 + 1), 0)) c(p2)
union
SELECT
a.list
, SUBSTRING(a.subscribers, p2 + 1, ISNULL(p3, LEN(a.subscribers) + 1) - p2 - 1) sub
from ListSubs a
CROSS APPLY (select NULLIF(CHARINDEX(',', a.subscribers), 0)) b(p1)
CROSS APPLY (select NULLIF(CHARINDEX(',', a.subscribers, p1 + 1), 0)) c(p2)
CROSS APPLY (select NULLIF(CHARINDEX(',', a.subscribers, p2 + 1), 0)) d(p3)
union
SELECT
a.list
, SUBSTRING(a.subscribers, p3 + 1, ISNULL(p4, LEN(a.subscribers) + 1) - p3 - 1) sub
from ListSubs a
CROSS APPLY (select NULLIF(CHARINDEX(',', a.subscribers), 0)) b(p1)
CROSS APPLY (select NULLIF(CHARINDEX(',', a.subscribers, p1 + 1), 0)) c(p2)
CROSS APPLY (select NULLIF(CHARINDEX(',', a.subscribers, p2 + 1), 0)) d(p3)
CROSS APPLY (select NULLIF(CHARINDEX(',', a.subscribers, p3 + 1), 0)) e(p4)
union
SELECT
a.list
, SUBSTRING(a.subscribers, p4 + 1, ISNULL(p5, LEN(a.subscribers) + 1) - p4 - 1) sub
from ListSubs a
CROSS APPLY (select NULLIF(CHARINDEX(',', a.subscribers), 0)) b(p1)
CROSS APPLY (select NULLIF(CHARINDEX(',', a.subscribers, p1 + 1), 0)) c(p2)
CROSS APPLY (select NULLIF(CHARINDEX(',', a.subscribers, p2 + 1), 0)) d(p3)
CROSS APPLY (select NULLIF(CHARINDEX(',', a.subscribers, p3 + 1), 0)) e(p4)
CROSS APPLY (select NULLIF(CHARINDEX(',', a.subscribers, p4 + 1), 0)) f(p5)
union
SELECT
a.list
, SUBSTRING(a.subscribers, p5 + 1, ISNULL(p6, LEN(a.subscribers) + 1) - p5 - 1) sub
from ListSubs a
CROSS APPLY (select NULLIF(CHARINDEX(',', a.subscribers), 0)) b(p1)
CROSS APPLY (select NULLIF(CHARINDEX(',', a.subscribers, p1 + 1), 0)) c(p2)
CROSS APPLY (select NULLIF(CHARINDEX(',', a.subscribers, p2 + 1), 0)) d(p3)
CROSS APPLY (select NULLIF(CHARINDEX(',', a.subscribers, p3 + 1), 0)) e(p4)
CROSS APPLY (select NULLIF(CHARINDEX(',', a.subscribers, p4 + 1), 0)) f(p5)
CROSS APPLY (select NULLIF(CHARINDEX(',', a.subscribers, p5 + 1), 0)) g(p6)
union
SELECT
a.list
, SUBSTRING(a.subscribers, p6 + 1, ISNULL(p7, LEN(a.subscribers) + 1) - p6 - 1) sub
from ListSubs a
CROSS APPLY (select NULLIF(CHARINDEX(',', a.subscribers), 0)) b(p1)
CROSS APPLY (select NULLIF(CHARINDEX(',', a.subscribers, p1 + 1), 0)) c(p2)
CROSS APPLY (select NULLIF(CHARINDEX(',', a.subscribers, p2 + 1), 0)) d(p3)
CROSS APPLY (select NULLIF(CHARINDEX(',', a.subscribers, p3 + 1), 0)) e(p4)
CROSS APPLY (select NULLIF(CHARINDEX(',', a.subscribers, p4 + 1), 0)) f(p5)
CROSS APPLY (select NULLIF(CHARINDEX(',', a.subscribers, p5 + 1), 0)) g(p6)
CROSS APPLY (select NULLIF(CHARINDEX(',', a.subscribers, p6 + 1), 0)) h(p7)
) x
where x.sub is not null
SQLFiddle