Heim > Datenbank > MySQL-Tutorial > Wie kann ich durch Kommas getrennte Werte in Oracle effizient aufteilen, ohne doppelte Zeilen zu generieren?

Wie kann ich durch Kommas getrennte Werte in Oracle effizient aufteilen, ohne doppelte Zeilen zu generieren?

Linda Hamilton
Freigeben: 2025-01-01 06:29:10
Original
551 Leute haben es durchsucht

How Can I Efficiently Split Comma-Separated Values in Oracle Without Generating Duplicate Rows?

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

Diese Abfrage führt zwei wichtige Änderungen ein:

  1. Prüfung der vorherigen Zeile: Die Die Bedingung PRIOR slno = slno stellt sicher, dass nur Zeilen aus derselben Quellzeile verarbeitet werden, wodurch doppelte Zeilen aus verschiedenen Zeilen wirksam verhindert werden.
  2. Zufallswertprüfung: Die Bedingung PRIOR DBMS_RANDOM.VALUE IS NOT NULL wählt für jede Zeile einen Zufallswert aus und stellt so sicher, dass jeder geteilte Wert eine eindeutige Kombination aus Zeile und Zufall aufweist Wert.

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!

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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage