Heim > Datenbank > MySQL-Tutorial > Gibt es in älteren Oracle-Versionen ein LISTAGG-Äquivalent zu MySQLs GROUP_CONCAT?

Gibt es in älteren Oracle-Versionen ein LISTAGG-Äquivalent zu MySQLs GROUP_CONCAT?

Patricia Arquette
Freigeben: 2025-01-15 12:19:45
Original
128 Leute haben es durchsucht

Is There a LISTAGG Equivalent in Older Oracle Versions to MySQL's GROUP_CONCAT?

Gibt es ein Äquivalent von GROUP_CONCAT für MySQL in Oracle?

Frage:

Wie verkette ich mehrere Werte in einer bestimmten Spalte in einer einzigen durch Kommas getrennten Zeichenfolge in Oracle? Die Eingabedaten folgen einem bestimmten Format und die gewünschte Ausgabe sollte Werte für jeden eindeutigen Schlüssel gruppieren und verketten.

Antwort:

Für Oracle 11g und höher:

Verwenden Sie die LISTAGG-Funktion:

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

Für Oracle 10g und niedriger:

Eine Möglichkeit besteht darin, eine benutzerdefinierte Funktion zu 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>
Nach dem Login kopieren

Anwendung:

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

Hinweis: Oracle-Versionen vor 11g bieten eingeschränkte Unterstützung für die WM_CONCAT-Funktion, ihre Verwendung ist jedoch aufgrund möglicher Probleme veraltet (Einzelheiten finden Sie in der Oracle-Dokumentation).

In MySQL (nur als Referenz):

GROUP_CONCAT-Funktion verfügbar:

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

Das obige ist der detaillierte Inhalt vonGibt es in älteren Oracle-Versionen ein LISTAGG-Äquivalent zu MySQLs GROUP_CONCAT?. 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