Først, lad mig bare sige, at dette er grunden til, at du ikke bør have kommaseparerede data i et felt i første omgang. Der er ingen nem eller effektiv måde at arbejde med det på.
Når det er sagt, kan du bruge en rekursiv forespørgsel til at opdele strengen og få tallene fra den:
with split as
(
select
item = cast('' as varchar(max)),
source = cast('20,0, 5,,^24,0, 0,,^26,0, 0,,^281,0, 0,,^34,0, 2,,^48,0, 2,,^44,0, 2,,^20,0, 10,,^20,5, 5,,^379,1, 1,,^26,1, 2,,^32,0, 1,,^71,0, 2,,^' as varchar(max))
union all
select
item = substring(source, 1, charindex(',,', source)),
source = substring(source, charindex(',,', source) + 2, 10000)
from split
where source > ''
)
select substring(item, 1, charindex(',', item) -1)
from split
where item > ''
Resultat:
20
^24
^26
^281
^34
^48
^44
^20
^20
^379
^26
^32
^71