Maison >base de données >tutoriel mysql >Comment puis-je combiner efficacement des tableaux en tableaux multidimensionnels dans PostgreSQL ?
PostgreSQL fournit diverses options pour combiner efficacement des tableaux, permettant de manipuler des données complexes structures en toute simplicité.
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;
Résultat :
ab ------- {a,d} {b,e} {c,f}
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 = '{}' );
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;
Résultat :
{{a,d},{b,e},{c,f}}
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$
Utilisation :
SELECT zip2('{a,b,c}'::text[], '{d,e,f}'::text[]);
Résultat :
{{a,d},{b,e},{c,f}}
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!