Heim >Datenbank >MySQL-Tutorial >Wie kann ich Zeichenfolgen in Oracle effizient in mehrere Zeilen aufteilen?
Datenbankoperationen erfordern häufig die Aufteilung von Zeichenfolgen in einzelne Zeilen. Oracle bietet insbesondere in den Versionen 10g und höher effektive Methoden, um diese Aufgabe zu bewältigen.
Eine einfache, aber leistungsstarke Technik verwendet reguläre Ausdrücke und die connect by
-Klausel. Dazu gehört die Erstellung einer temporären Tabelle und die Verwendung regulärer Ausdrucksfunktionen zum Extrahieren von Teilzeichenfolgen:
<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;</code>
temp
CTE (Common Table Expression) simuliert Beispieldaten.length(regexp_replace(t.error, '[^,] ')) 1
ermittelt die Anzahl der Fehler durch Zählen der durch Kommas getrennten Werte.select level from dual connect by level <= ...
generiert eine Zahlenfolge von 1 bis zur Fehleranzahl.table(cast(multiset(...) as sys.OdciNumberList))
wandelt die Zahlenfolge in eine verwendbare Sammlung um.temp
mit der Zahlensammlung und erstellt so alle notwendigen Kombinationen.trim(regexp_substr(t.error, '[^,] ', 1, levels.column_value))
extrahiert jeden Fehler unter Verwendung der generierten Nummer als Positionsindikator.Diese Methode teilt Zeichenfolgen mit mehreren Werten effizient in separate Zeilen auf und behält dabei die Datenintegrität bei.
Das obige ist der detaillierte Inhalt vonWie kann ich Zeichenfolgen in Oracle effizient in mehrere Zeilen aufteilen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!