Aufteilen mehrerer durch Kommas getrennter Werte in einer Oracle-Tabelle in eindeutige Zeilen
In Oracle wird häufig durch Kommas getrennte Werte in mehrere Zeilen aufgeteilt unter Verwendung regulärer Ausdrücke und der CONNECT BY-Klausel. Eine häufig auftretende Herausforderung ist jedoch die Generierung doppelter Zeilen. Dies kann besonders problematisch in Tabellen mit mehreren Zeilen sein, in denen jede Zeile durch Kommas getrennte Zeichenfolgen enthält.
Um dieses Problem zu beheben, kann eine modifizierte Abfrage verwendet werden, um die Werte aufzuteilen und gleichzeitig doppelte Zeilen effektiv zu entfernen:
WITH CTE AS (SELECT 'a,b,c,d,e' temp, 1 slno FROM DUAL UNION SELECT 'f,g' temp, 2 slno FROM DUAL UNION SELECT 'h' temp, 3 slno FROM DUAL) SELECT TRIM(REGEXP_SUBSTR(temp, '[^,]+', 1, level)), slno FROM CTE CONNECT BY level <= REGEXP_COUNT(temp, '[^,]+') AND PRIOR slno = slno AND PRIOR DBMS_RANDOM.VALUE IS NOT NULL
Diese Abfrage führt zwei wichtige Änderungen ein:
Dadurch teilt diese Abfrage durch Kommas getrennte Werte effektiv in mehrere Zeilen auf, behält dabei die eindeutige Zeilenidentifikation bei und verhindert die Generierung doppelter Zeilen.
Das obige ist der detaillierte Inhalt vonWie kann ich durch Kommas getrennte Werte in Oracle effizient aufteilen, ohne doppelte Zeilen zu generieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!