Entwickler-Ecke

Alle Sprachen - Alle Plattformen - Oracle Listagg mit Regex funktioniert nicht richtig


Maliko - Mi 11.03.20 15:37
Titel: Oracle Listagg mit Regex funktioniert nicht richtig
Moin,

ich hab grad ein kleines Probelem mit einem Oracle-Query. Und zwar mache ich einen Listagg auf eine Tabellenspalte. Dadurch bekomme ich die einträge leider doppelt und dreifach. Da DISTINCT bei unserer Version in Listagg nicht funktioniert habe ich es mit Regex versucht. Das was ich im Internet gefunden habe funktioniert auch wunderbar. Allerdings nur solange ich kein Leerzeichen hinter dem Seperator habe. Folgende Version funktioniert:


SQL-Anweisung
1:
RTRIM ( REGEXP_REPLACE ((listagg (korrekturrechnung, ',') WITHIN GROUP(ORDER BY korrekturrechnung)), '([^,]+)(,\1)*(,|$)''\1\3'), ','as korrekturrechnung,                    


Wenn ich jetzt aber den folgenden Teil nehme, dann bekomme ich trotzdem den ersten Eintrag doppelt:


SQL-Anweisung
1:
RTRIM ( REGEXP_REPLACE ((listagg (korrekturrechnung, ', ') WITHIN GROUP(ORDER BY korrekturrechnung)), '([^,]+)(,\1)*(,|$)''\1\3'), ', 'as korrekturrechnung,                    


Leider ist mein Regex absolut grauenhaft und daher hoffe ich das mir irgendjemand sagen kann, wie ich den Regex anpassen kann, dass er auch mit dem Leerzeichen hinter dem Komma klar kommt.

Danke schon einmal im Voraus.

Viele Grüße
Maliko