Lassen Sie mich zunächst sagen, dass dies der Grund dafür ist, dass Sie in erster Linie keine kommagetrennten Daten in einem Feld haben sollten. Es gibt keinen einfachen oder effizienten Weg, damit zu arbeiten.
Das heißt, Sie können eine rekursive Abfrage verwenden, um die Zeichenfolge aufzuteilen und die Zahlen daraus zu erhalten:
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 > ''
Ergebnis:
20
^24
^26
^281
^34
^48
^44
^20
^20
^379
^26
^32
^71