Komma-getrennte Zeichenfolge in Oracle in mehrere Zeilen aufteilen
Das Aufteilen einer durch Kommas getrennten Zeichenfolge in mehrere Zeilen ist eine häufige Datenvorverarbeitungs- und Analyseaufgabe in Oracle Database. Obwohl es viele Möglichkeiten gibt, dies zu erreichen, werden wir uns eine einfache und effektive Methode ansehen.
Eine Möglichkeit besteht darin, die regulären Ausdrücke von Oracle zu nutzen und eine Verbindung über die Funktionalität herzustellen. Betrachten Sie die folgende Tabelle, in der jeder Datensatz durch Kommas getrennte Fehler enthält:
名称 | 项目 | 错误 |
---|---|---|
108 | test | Err1, Err2, Err3 |
109 | test2 | Err1 |
Unser Ziel ist es, jeden Fehler in eine separate Zeile zu extrahieren, was zu Folgendem führt:
名称 | 项目 | 错误 |
---|---|---|
108 | test | Err1 |
108 | test | Err2 |
108 | test | Err3 |
109 | test2 | Err1 |
Dazu verwenden wir eine hierarchische Abfrage und regexp_substr, um jeden Fehler basierend auf der Anzahl des Auftretens des Fehlers zu extrahieren. Die folgende Abfrage veranschaulicht diesen Ansatz:
<code class="language-sql">with temp as ( select 108 Name, 'test' Project, 'Err1, Err2, Err3' Error from dual union all select 109, 'test2', 'Err1' from dual ) select distinct t.name, t.project, trim(regexp_substr(t.error, '[^,]+', 1, levels.column_value)) as error from temp t, table(cast(multiset(select level from dual connect by level <= length(regexp_replace(t.error, '[^,]+')) + 1) as sys.OdciNumberList)) levels order by name</code>
Diese Abfrage verwendet Kommas, um die Länge der Zeichenfolge (regexp_replace) zu ersetzen, und einen hierarchischen Abfragemechanismus, um eine Reihe verschiedener Ebenen zu erstellen. Jede Ebene stellt die Anzahl der Fehlervorkommen in einer durch Kommas getrennten Zeichenfolge dar. Die Funktion regexp_substr extrahiert dann die Fehler basierend auf der Anzahl ihrer Vorkommnisse und der endgültige Ergebnissatz enthält die gewünschte Ausgabe.
Diese Methode bietet eine einfache und effiziente Möglichkeit, eine durch Kommas getrennte Zeichenfolge in mehrere Zeilen in Oracle 10g und höher aufzuteilen. Es nutzt die leistungsstarken String-Manipulationsfunktionen und hierarchischen Abfragefunktionen von Oracle, um die erforderlichen Datentransformationen zu erreichen.
Das obige ist der detaillierte Inhalt vonWie teile ich eine durch Kommas getrennte Zeichenfolge in mehrere Zeilen in Oracle auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!