Maison >base de données >tutoriel mysql >Comment puis-je compresser deux tableaux dans PostgreSQL ?

Comment puis-je compresser deux tableaux dans PostgreSQL ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-04 19:02:40952parcourir

How Can I Zip Two Arrays in PostgreSQL?

La compression de tableaux dans PostgreSQL

Dans PostgreSQL, la combinaison de deux tableaux de longueur égale en paires peut être réalisée en utilisant diverses méthodes.

Versions 9.5 et Plus tard :

Postgres version 9.5 a introduit la fonction array_agg avec la construction ROWS FROM, qui permet la concaténation directe de tableaux :

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

Versions 9.4 et antérieures :

Avant la version 9.5, il y en a deux approches :

Zipping simple :

Pour les tableaux avec le même nombre d'éléments, utilisez la requête suivante :

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

Zipping pour les tableaux multidimensionnels :

Pour convertir les tableaux compressés en un tableau multidimensionnel, considérez la fonction d'agrégation personnalisée suivante :

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

Utilisez cette fonction d'agrégation avec l'opération d'imbrication :

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;

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:
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