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:
SELECT col1, LISTAGG(col2, ', ') WITHIN GROUP (ORDER BY col2) AS names FROM table_x GROUP BY col1
Oracle 10g und niedrigere Versionen verwenden benutzerdefinierte Funktionen
Für Oracle 10g und niedriger können Sie eine benutzerdefinierte Funktion erstellen:
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; /
Anwendung:
SELECT col1, get_comma_separated_value(col1) FROM table_name
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:
SELECT col1, GROUP_CONCAT(col2) FROM table_name GROUP BY col1
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!