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

Comment puis-je combiner des tableaux dans PostgreSQL ?

Susan Sarandon
Libérer: 2025-01-05 13:59:45
original
572 Les gens l'ont consulté

How Can I Combine Arrays in PostgreSQL?

Combinaison de tableaux dans PostgreSQL : un guide complet

Introduction

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.

Tableaux compressés pour une sortie unidimensionnelle

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

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

Tableaux compressés pour multidimensionnels Sortie

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

Fonction Zip généralisée

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

Utilisation Scénarios

Les exemples présentés dans cet article présentent différents scénarios de combinaison de tableaux :

  • Zip simple :Combinaison de tableaux en un ensemble de paires d'éléments (simple- sortie dimensionnelle).
  • Compression multidimensionnelle : Combiner des tableaux dans un fichier bidimensionnel array.
  • Zipping généralisé : Combiner des tableaux de tout type et renvoyer un ensemble de tableaux.

Conclusion

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!

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