Heim >Datenbank >MySQL-Tutorial >Wie kann man in Oracle durch Kommas getrennte Werte effizient und ohne Duplikate in mehrere Zeilen aufteilen?
Oracle: Durch Kommas getrennte Werte effizient in mehrere Zeilen aufteilen
In Oracle-Abfragen, wenn durch Kommas getrennte Daten mithilfe von CONNECT in mehrere Zeilen aufgeteilt werden BY und reguläre Ausdrücke können doppelte Zeilen entstehen. Um dieses Problem zu lösen, sollten Sie die folgenden Strategien in Betracht ziehen:
Verwendung von REGEXP_COUNT() für eine genaue Aufteilung
Die geänderte Abfrage führt REGEXP_COUNT() ein, um die Anzahl der durch Kommas getrennten Werte zu ermitteln Werte in jeder Zeile:
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
Nutzung der Verbindung nach Ebene und Priorität DBMS_RANDOM.VALUE
Diese erweiterte Abfrage nutzt CONNECT BY LEVEL zusammen mit PRIOR DBMS_RANDOM.VALUE, um Duplikate zu eliminieren:
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
Durch die Verwendung dieser modifizierten Abfrage können Sie Komma- Trennen Sie Werte in mehrere Zeilen und stellen Sie gleichzeitig sicher, dass doppelte Zeilen entfernt werden.
Das obige ist der detaillierte Inhalt vonWie kann man in Oracle durch Kommas getrennte Werte effizient und ohne Duplikate in mehrere Zeilen aufteilen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!