SQL ET POSTGRE 5.Concatenation

La concaténation permet de réunir plusieurs chaînes de caractères en une seule, par exemple pour afficher prénom et nom dans la même colonne. PostgreSQL propose deux approches : l'opérateur standard || et la fonction CONCAT(), chacune avec ses spécificités.

Opérateur double pipe et fonction CONCAT

L'opérateur || est le plus courant. Il accole les chaînes sans aucun séparateur, donc il faut ajouter explicitement les espaces ou la ponctuation souhaitée :

SELECT prenom || ' ' || nom AS nom_complet
FROM acteur;

Le résultat affiche par exemple "Bruce Lee" dans une seule colonne. Si l'une des valeurs concaténées est NULL, le résultat complet devient NULL avec l'opérateur ||. C'est un piège classique : un acteur sans deuxième prénom renvoie un nom complet NULL.

La fonction CONCAT() traite les NULL différemment : elle les remplace par une chaîne vide, ce qui évite ce problème :

  • CONCAT(prenom, ' ', nom) renvoie toujours une chaîne, même avec un NULL
  • CONCAT_WS(' ', prenom, deuxieme_prenom, nom) insère automatiquement le séparateur entre chaque argument non NULL
  • Idéal pour les noms complets avec champs optionnels
  • Plus verbeux mais plus sûr en présence de données incomplètes

On combine fréquemment concaténation et alias pour produire des affichages clairs. Par exemple SELECT prenom || ' ' || nom AS "Nom complet", duree || ' min' AS "Durée" FROM films renvoie un libellé prêt à afficher. Pour gérer proprement les NULL, on peut aussi utiliser COALESCE : COALESCE(prenom, '') || ' ' || COALESCE(nom, '') remplace toute valeur manquante par une chaîne vide avant concaténation.