


Comment concaténer des chaînes dans une requête PostgreSQL « group by » ?
Concaténer les champs de chaîne dans PostgreSQL group by
requête
Lors du traitement de données dans une base de données PostgreSQL, vous devrez peut-être concaténer des chaînes pour des champs spécifiques dans une requête group by
. Cela peut être réalisé de différentes manières, selon la version de PostgreSQL.
PostgreSQL 9.0 et supérieur
Les versions modernes de PostgreSQL (publiées après 2010) fournissent la fonction string_agg(expression, delimiter)
. Cette fonction permet de concaténer des chaînes dans des requêtes group by
, séparées par des délimiteurs spécifiés.
Par exemple, pour joindre les champs COMPANY_ID
dans chaque EMPLOYEE
groupe, vous pouvez utiliser la requête suivante :
SELECT company_id, string_agg(employee, ', ') FROM mytable GROUP BY company_id;
PostgreSQL 8.4.x
Dans PostgreSQL 8.4, vous pouvez utiliser array_agg(expression)
fonctions d'agrégation pour collecter des valeurs dans un tableau. Le tableau peut ensuite être converti en chaîne concaténée à l'aide de la fonction array_to_string()
:
SELECT company_id, array_to_string(array_agg(employee), ', ') FROM mytable GROUP BY company_id;
PostgreSQL 8.3.x et versions inférieures
Dans les anciennes versions de PostgreSQL, il n'y a pas de fonction d'agrégation intégrée pour la concaténation de chaînes. Une implémentation personnalisée implique la création d'une fonction d'agrégation personnalisée à l'aide de la fonction textcat
:
CREATE AGGREGATE textcat_all( basetype = text, sfunc = textcat, stype = text, initcond = '' );
De plus, une fonction de connexion personnalisée peut être créée pour gérer des besoins spécifiques, tels que l'ignorance des valeurs nulles ou des chaînes vides :
CREATE FUNCTION commacat_ignore_nulls(acc text, instr text) RETURNS text AS $$ BEGIN IF acc IS NULL OR acc = '' THEN RETURN instr; ELSIF instr IS NULL OR instr = '' THEN RETURN acc; ELSE RETURN acc || ', ' || instr; END IF; END; $$ LANGUAGE plpgsql;
Grâce à cette fonction, vous pouvez modifier la requête comme suit :
SELECT company_id, commacat_ignore_nulls(employee) FROM mytable GROUP BY company_id;
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Réduisez l'utilisation de la mémoire MySQL dans Docker

Comment modifier une table dans MySQL en utilisant l'instruction ALTER TABLE?

Comment résoudre le problème de MySQL ne peut pas ouvrir la bibliothèque partagée

Exécutez MySQL dans Linux (avec / sans conteneur Podman avec phpmyadmin)

Exécuter plusieurs versions MySQL sur macOS: un guide étape par étape

Quels sont les outils de GUI MySQL populaires (par exemple, MySQL Workbench, PhpMyAdmin)?

Comment configurer le cryptage SSL / TLS pour les connexions MySQL?
