Heim > Datenbank > MySQL-Tutorial > Wie kann ich Arrays in PostgreSQL effizient zu mehrdimensionalen Arrays kombinieren?

Wie kann ich Arrays in PostgreSQL effizient zu mehrdimensionalen Arrays kombinieren?

Barbara Streisand
Freigeben: 2025-01-06 01:11:39
Original
718 Leute haben es durchsucht

How Can I Efficiently Combine Arrays into Multi-Dimensional Arrays in PostgreSQL?

Kombinieren von Arrays zu mehrdimensionalen Arrays in PostgreSQL

Einführung

PostgreSQL bietet verschiedene Optionen zum effizienten Kombinieren von Arrays und ermöglicht so die Bearbeitung komplexer Daten Strukturen mit Leichtigkeit.

Einfache zip()-Funktion (gleiche Länge Arrays)

Um zwei Arrays gleicher Länge zu kombinieren, können Sie die Funktion unnest() zusammen mit dem Konstruktor ARRAY[] verwenden:

SELECT ARRAY[a,b] AS ab
FROM (
    SELECT unnest('{a,b,c}'::text[]) AS a, unnest('{d,e,f}'::text[]) AS b
) x;
Nach dem Login kopieren

Ergebnis:

  ab
-------
{a,d}
{b,e}
{c,f}
Nach dem Login kopieren

zip()-Funktion zum Aggregieren zu mehrdimensionalen Arrays

Zum Aggregieren gepaarter Elemente zu einem mehrdimensionalen Array, PostgreSQL bietet die benutzerdefinierte Aggregatfunktion array_agg_mult():

CREATE AGGREGATE array_agg_mult (anyarray) (
    SFUNC = array_cat,
    STYPE = anyarray,
    INITCOND = '{}'
);
Nach dem Login kopieren

Verwendung:

SELECT array_agg_mult(ARRAY[ARRAY[a,b]]) AS ab
FROM (
    SELECT unnest('{a,b,c}'::text[]) AS a, unnest('{d,e,f}'::text[]) AS b
) x;
Nach dem Login kopieren

Ergebnis:

{{a,d},{b,e},{c,f}}
Nach dem Login kopieren
Nach dem Login kopieren

Alternativ kann die Funktion zip2() sein als Hülle erstellt array_agg_mult():

CREATE OR REPLACE FUNCTION zip2(anyarray, anyarray)
RETURNS SETOF anyarray LANGUAGE SQL AS
$func$
SELECT array_agg_mult(ARRAY[ARRAY[a,b]])
FROM (SELECT unnest() AS a, unnest() AS b) x;
$func$
Nach dem Login kopieren

Verwendung:

SELECT zip2('{a,b,c}'::text[], '{d,e,f}'::text[]);
Nach dem Login kopieren

Ergebnis:

{{a,d},{b,e},{c,f}}
Nach dem Login kopieren
Nach dem Login kopieren

Postgres 9.5 (array_agg(array expression))

In Postgres 9.5 und höher ist dies mit der Funktion array_agg(array expression) möglich Kombinieren Sie Arrays direkt zu einem mehrdimensionalen Array und bieten Sie so eine effizientere Lösung im Vergleich zur benutzerdefinierten Aggregatfunktion. Seine Verwendung ähnelt der Funktion array_agg_mult().

Das obige ist der detaillierte Inhalt vonWie kann ich Arrays in PostgreSQL effizient zu mehrdimensionalen Arrays kombinieren?. 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