PostgreSQL fournit diverses méthodes pour manipuler les tableaux. Une opération courante consiste à combiner deux tableaux de longueur égale en paires d’éléments. Cet article explore différentes approches pour réaliser cette tâche, en tenant compte des versions de PostgreSQL et des cas d'utilisation spécifiques.
PostgreSQL 9.5 ou version ultérieure
PostgreSQL 9.5 introduit array_agg(array expression), vous permettant de concaténer plusieurs tableaux dans un tableau de dimension supérieure. Cette fonctionnalité simplifie les tâches de combinaison de tableaux, éliminant le besoin de fonctions d'agrégation personnalisées.
SELECT array_agg(ARRAY[a, b]) AS ab FROM unnest('{a,b,c}'::text[]) AS a, unnest('{d,e,f}'::text[]) AS b;
PostgreSQL 9.4
Avant PostgreSQL 9.5, une approche alternative consiste à utiliser unnest( ) avec ROWS FROM.
SELECT ARRAY[a, b] AS ab FROM unnest('{a,b,c}'::text[], '{d,e,f}'::text[]) AS tmp(a, b);
Pour les cas où vous devez combiner des tableaux dans un tableau multidimensionnel, une fonction d'agrégation personnalisée est nécessaire.
CREATE OR REPLACE FUNCTION array_agg_mult(anyarray) RETURNS SETOF anyarray LANGUAGE SQL AS $func$ SELECT ARRAY[ARRAY[a, b]] FROM unnest() AS unnest1(a, b); $func$;
SELECT array_agg_mult(ARRAY[ARRAY[a, b]]) AS ab FROM unnest('{a,b,c}'::text[]) AS a, unnest('{d,e,f}'::text[]) AS b;
Ce qui suit La fonction fournit une approche généralisée pour compresser des tableaux de tout type :
CREATE OR REPLACE FUNCTION zip(anyarray, anyarray) RETURNS SETOF anyarray LANGUAGE SQL AS $func$ SELECT array_agg_mult(ARRAY[ARRAY[a, b]]) FROM unnest() AS unnest1(a, b) JOIN unnest() AS unnest2(a, b) ON true; $func$;
Les exemples présentés dans cet article présentent différents scénarios de combinaison de tableaux :
PostgreSQL fournit plusieurs options pour combinant des tableaux, en fonction de la version et du format de sortie souhaité. Cet article a couvert de manière exhaustive les approches disponibles, vous permettant de sélectionner la méthode la plus adaptée à vos besoins spécifiques.
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!