Heim > Datenbank > MySQL-Tutorial > Wie teile ich eine durch Kommas getrennte Zeichenfolge in mehrere Zeilen in Oracle auf?

Wie teile ich eine durch Kommas getrennte Zeichenfolge in mehrere Zeilen in Oracle auf?

DDD
Freigeben: 2025-01-22 17:47:09
Original
103 Leute haben es durchsucht

How to Split a Comma-Delimited String into Multiple Rows in Oracle?

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage