Tout d'abord, permettez-moi de dire que c'est la raison pour laquelle vous ne devriez pas avoir de données séparées par des virgules dans un champ en premier lieu. Il n'existe aucun moyen simple ou efficace de travailler avec.
Cela dit, vous pouvez utiliser une requête récursive pour diviser la chaîne et en extraire les nombres :
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 > ''
Résultat :
20
^24
^26
^281
^34
^48
^44
^20
^20
^379
^26
^32
^71