Maison >base de données >tutoriel mysql >Comment concaténer correctement les colonnes dans les instructions PostgreSQL SELECT ?

Comment concaténer correctement les colonnes dans les instructions PostgreSQL SELECT ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-12 06:16:47417parcourir

How to Properly Concatenate Columns in PostgreSQL SELECT Statements?

Joindre des colonnes dans une instruction PostgreSQL SELECT

Lors de la concaténation de chaînes de caractères dans une instruction PostgreSQL SELECT, vous pouvez rencontrer des erreurs si les colonnes ne sont pas explicitement converties en texte.

Question :

Il y a deux colonnes de chaînes a et b dans le tableau foo. En essayant de les rejoindre en utilisant un || b ou un || ', ' || b renvoie des résultats nuls ou inattendus.

Solution :

Pour concaténer correctement des chaînes dans Postgres, au moins une entrée doit être convertie en texte. Voici deux façons de procéder :

  • Convertir une colonne en texte :
<code class="language-sql">SELECT a::text || b AS ab FROM foo;</code>
  • Utiliser le séparateur de texte :
<code class="language-sql">SELECT a || ', ' || b AS ab FROM foo;</code>

Remarque :

  • L'utilisation de l'opérateur de concaténation (||) entre des types de données autres que des chaînes est obsolète.
  • Pour les cas où des valeurs nulles peuvent être impliquées et où le résultat ne doit pas être nul, utilisez la fonction concat_ws() :
<code class="language-sql">SELECT concat_ws(', ', a, b) AS ab FROM foo;</code>
  • Vous pouvez également utiliser la fonction concat() pour une concaténation sans délimiteur :
<code class="language-sql">SELECT concat(a, b) AS ab FROM foo;</code>

Notes supplémentaires :

    • L'opérateur
    • n'est pas un opérateur de concaténation de chaînes valide dans Postgres.
  • L'utilisation du type de données caractère(n) pour stocker des chaînes n'est généralement pas recommandée. Pensez plutôt à utiliser text ou varchar.

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!

Déclaration:
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