Maison > base de données > tutoriel mysql > Comment compresser deux tableaux dans PostgreSQL pour créer un tableau multidimensionnel ?

Comment compresser deux tableaux dans PostgreSQL pour créer un tableau multidimensionnel ?

Linda Hamilton
Libérer: 2025-01-04 18:28:40
original
516 Les gens l'ont consulté

How to Zip Two Arrays in PostgreSQL to Create a Multi-Dimensional Array?

Postgres : combiner deux tableaux à l'aide d'une fonction "zip()"

Fonctions Postgres

Il existe plusieurs méthodes pour combiner deux tableaux en un seul tableau multidimensionnel utilisant les fonctions Postgres :

Postgres 9.5 ou plus tard :

  • array_agg(expression de tableau) : concatène tous les tableaux d'entrée en un tableau d'une dimension supérieure.

Postgres 9.4 :

  • ROWS FROM ou unnest() : désemboîte plusieurs tableaux dans parallèle, autorisant des tableaux de différentes longueurs.

Postgres 9.3 ou version antérieure :

  • zip() : une fonction personnalisée qui désimbrique deux tableaux simultanément, créer un nouvel ensemble de tableaux.

Simple zip() Fonction

Considérons l'exemple suivant pour Postgres 9.3 ou version antérieure :

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

zip() vers multidimensionnel Tableau

Pour agréger l'ensemble de tableaux résultant dans un tableau à 2 dimensions, une fonction d'agrégation personnalisée appelée array_agg_mult() est nécessaire :

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

Ensuite, utilisez-le comme suit :

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

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!

source:php.cn
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