Heim >Datenbank >MySQL-Tutorial >Wie aggregiere ich Zeilen in durch Kommas getrennten Listen in Oracle?

Wie aggregiere ich Zeilen in durch Kommas getrennten Listen in Oracle?

Linda Hamilton
Linda HamiltonOriginal
2025-01-19 17:57:10453Durchsuche

How to Aggregate Rows into Comma-Separated Lists in Oracle?

Oracle: Zeilen in durch Kommas getrennte Listen kombinieren

Häufig erfordert die Datenmanipulation die Zusammenfassung mehrerer Zeilen in einer einzigen, durch Kommas getrennten Zeichenfolge. Oracle bietet hierfür mehrere Methoden an:

Methode 1: LISTAGG (Oracle 11.2 und höher)

Die Funktion LISTAGG (verfügbar ab Oracle 11.2) verkettet Zeilen effizient mithilfe eines angegebenen Trennzeichens. Seine Syntax ist:

<code class="language-sql">LISTAGG(expression, delimiter [, separator]) WITHIN GROUP (ORDER BY order_expression)</code>

Beispiel: Generieren einer durch Kommas getrennten Liste von Ländernamen aus einer countries-Tabelle:

<code class="language-sql">SELECT LISTAGG(country_name, ', ') WITHIN GROUP (ORDER BY country_name)
FROM countries;</code>

Methode 2: WM_CONCAT (Oracle-Versionen vor 11.2)

Für ältere Oracle-Datenbanken (vor 11.2) bietet die Funktion WM_CONCAT eine ähnliche Funktion:

<code class="language-sql">SELECT WM_CONCAT(country_name)
FROM countries;</code>

Methode 3: Benutzerdefinierte PL/SQL-Funktion

Sollten weder LISTAGG noch WM_CONCAT ausreichen, bietet eine benutzerdefinierte PL/SQL-Funktion eine flexible Lösung. Dies ermöglicht eine maßgeschneiderte Verkettungslogik, wie im bereitgestellten Beispiel mithilfe von Schleifen und String-Verkettung gezeigt.

Das obige ist der detaillierte Inhalt vonWie aggregiere ich Zeilen in durch Kommas getrennten Listen in Oracle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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