Heim >Datenbank >MySQL-Tutorial >Wie erreicht man die GROUP_CONCAT-Funktionalität in Oracle?

Wie erreicht man die GROUP_CONCAT-Funktionalität in Oracle?

Barbara Streisand
Barbara StreisandOriginal
2025-01-15 12:28:44379Durchsuche

How to Achieve GROUP_CONCAT Functionality in Oracle?

Gruppenbeitrittsvorgang in Oracle

MySQLs GROUP_CONCAT-Funktion kann die gruppierten Werte mehrerer Zeilen zu einer Zeichenfolge verketten. In Oracle gibt es keine exakt äquivalente Funktion, es gibt jedoch mehrere Möglichkeiten, eine ähnliche Funktionalität zu erreichen.

Oracle 11g und höher verwendet LISTAGG

Oracle 11g führte die Funktion LISTAGG ein, die Werte in durch Kommas getrennte Zeichenfolgen aggregiert:

<code class="language-sql">SELECT 
    col1,
    LISTAGG(col2, ', ') WITHIN GROUP (ORDER BY col2) AS names
FROM table_x
GROUP BY col1</code>

Oracle 10g und niedrigere Versionen verwenden benutzerdefinierte Funktionen

Für Oracle 10g und niedriger können Sie eine benutzerdefinierte Funktion erstellen:

<code class="language-sql">CREATE OR REPLACE FUNCTION get_comma_separated_value (input_val IN NUMBER)
  RETURN VARCHAR2
IS
  return_text VARCHAR2(10000) := NULL;
BEGIN
  FOR x IN (SELECT col2 FROM table_name WHERE col1 = input_val) LOOP
    return_text := return_text || ',' || x.col2;
  END LOOP;
  RETURN LTRIM(return_text, ',');
END;
/</code>

Anwendung:

<code class="language-sql">SELECT col1, get_comma_separated_value(col1) FROM table_name</code>

Hinweis: In einigen älteren Oracle-Versionen ist eine (nicht unterstützte) Funktion WM_CONCAT verfügbar.

Alternative Methode in MySQL (zum Vergleich)

In MySQL können Sie die Funktion GROUP_CONCAT verwenden:

<code class="language-sql">SELECT col1, GROUP_CONCAT(col2) FROM table_name GROUP BY col1</code>

Das obige ist der detaillierte Inhalt vonWie erreicht man die GROUP_CONCAT-Funktionalität 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