Maison > base de données > tutoriel mysql > Comment puis-je combiner efficacement des tableaux en tableaux multidimensionnels dans PostgreSQL ?

Comment puis-je combiner efficacement des tableaux en tableaux multidimensionnels dans PostgreSQL ?

Barbara Streisand
Libérer: 2025-01-06 01:11:39
original
751 Les gens l'ont consulté

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

Combinaison de tableaux en tableaux multidimensionnels dans PostgreSQL

Introduction

PostgreSQL fournit diverses options pour combiner efficacement des tableaux, permettant de manipuler des données complexes structures en toute simplicité.

Fonction simple zip() (même longueur Tableaux)

Pour combiner deux tableaux de longueur égale, vous pouvez utiliser la fonction unnest() avec le constructeur ARRAY[] :

SELECT ARRAY[a,b] AS ab
FROM (
    SELECT unnest('{a,b,c}'::text[]) AS a, unnest('{d,e,f}'::text[]) AS b
) x;
Copier après la connexion

Résultat :

  ab
-------
{a,d}
{b,e}
{c,f}
Copier après la connexion

Fonction zip() Agrégation en tableaux multidimensionnels

Pour agréger des éléments appariés dans un tableau multidimensionnel array, PostgreSQL propose la fonction d'agrégation personnalisée array_agg_mult() :

CREATE AGGREGATE array_agg_mult (anyarray) (
    SFUNC = array_cat,
    STYPE = anyarray,
    INITCOND = '{}'
);
Copier après la connexion

Utilisation :

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;
Copier après la connexion

Résultat :

{{a,d},{b,e},{c,f}}
Copier après la connexion
Copier après la connexion

Alternativement, la fonction zip2() peut être créé comme un wrapper autour 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$
Copier après la connexion

Utilisation :

SELECT zip2('{a,b,c}'::text[], '{d,e,f}'::text[]);
Copier après la connexion

Résultat :

{{a,d},{b,e},{c,f}}
Copier après la connexion
Copier après la connexion

Postgres 9.5 (array_agg(expression de tableau))

Dans Postgres 9.5 et versions ultérieures, la fonction array_agg(array expression) peut combinez directement des tableaux en un tableau multidimensionnel, offrant une solution plus efficace par rapport à la fonction d'agrégation personnalisée. Son utilisation est similaire à la fonction array_agg_mult().

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal