Oracle String aus Column splitten und x Rows daraus erstellen

Moin,

ich hab da gerade ein kleines Problem in Oracle. Hat jetzt nicht direkt etwas mit Java zu tun, sondern es geht um ein SQL-Query, welches für ein Update der Software benötigt wird, aber vielleicht könnt ihr mir da ja trotzdem weiterhelfen.

Und zwar haben wir eine Tabelle wo in einer Spalte Pro Datensatz X Rechte stehen, welche jeweils durch einen Zeilenumbruch getrennt werden (wenn ich den Idioten finde, der auf diese Idee kam bring ich ihn um). Mein neues System benötigt diese aber mit einem Recht pro Row. Dazu muss ich wenn ich die nicht alle per Hand auseinanderklabustern will ein Query schreiben, welches diese Rechte Splittet und mir für jedes Recht eine Row generiert.

Folgendes habe ich probiert:

SQL:
select bnprofile.id as bnrechte_id, regexp_substr(rechteprofile.rechte, '.*$', 1, 1, 'm') from rechteprofile
INNER JOIN bnprofile
    ON rechteprofile.name = bnprofile.name;
Das funktioniert auch. Allerdings bekomme ich so immer nur das erste Recht. Was ich brauche wäre das für jedes Recht das in rechteprofile.rechte steht.

Das Feld rechte ist wie folgt aufgebaut:

Code:
Recht1
Recht2
Recht3
Recht4
Was ich jetzt brächte wäre folgender Aufbau:

ProfilidRecht
1Recht1
1Recht2
1Recht3
1Recht4
2Recht1
usw

Hätte da vielleicht jemand eine Ahnung wie ich da weiter vorgehen muss? Das sprengt meine SQL-Kenntnisse grad etwas.

Vielen Dank schon einmal im Vorraus.

LG
Maliko
 
Ein klein wenig Googlen und Stackoverflown brachte:
- https://stackoverflow.com/questions/19195280/connect-by-clause-in-regex-substr#answer-19195465
- https://lalitkumarb.wordpress.com/2014/12/02/split-comma-delimited-string-into-rows-in-oracle/
Wenn du das Update tatsächlich in einer einzigen SQL Query ausführen willst und keine externe Programmiersprache verwenden willst, mit der du z.B: Zeile-für-Zeile migrierst mit separaten Statements, dann benötigst du Oracles REGEXP_SUBSTR sowie CONNECT BY.
In dem Stackoverflow-Beispiel wird ein Literal als String benutzt, aber du müsstest stattdessen natürlich einfach eine Projektion auf die in Frage kommende Spalte machen.
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben