Maison >base de données >tutoriel mysql >Comment concaténer des colonnes dans les instructions PostgreSQL SELECT tout en gérant les valeurs NULL ?

Comment concaténer des colonnes dans les instructions PostgreSQL SELECT tout en gérant les valeurs NULL ?

DDD
DDDoriginal
2025-01-12 07:09:46622parcourir

How to Concatenate Columns in PostgreSQL SELECT Statements While Handling NULL Values?

Comment joindre des colonnes et gérer les valeurs NULL dans l'instruction PostgreSQL SELECT ?

Question :

Vous souhaitez concaténer deux colonnes de chaîne (a et b) dans une instruction PostgreSQL SELECT. Cependant, la concaténation directe à l'aide de l'opérateur || ou ||, ' renvoie une valeur NULL.

Solution :

Les jointures de type chaîne dans PostgreSQL nécessitent qu'au moins une entrée soit de type chaîne. Pour les types de données non-chaîne, une conversion explicite en type texte est requise pour une concaténation réussie.

Pour joindre des colonnes de type chaîne, utilisez la syntaxe suivante :

<code class="language-sql">SELECT a || b AS ab FROM foo;</code>

Vous pouvez également utiliser la fonction concat_ws() pour combiner des valeurs à l'aide de délimiteurs facultatifs :

<code class="language-sql">SELECT concat_ws(', ', a, b) AS ab FROM foo;</code>

Pour les types de données autres que des chaînes, convertissez-les en type texte avant la concaténation, comme indiqué dans l'exemple suivant :

<code class="language-sql">SELECT a::text || b AS ab FROM foo;</code>

Comparaison des fonctions :

  • concat() : Concatène plusieurs valeurs sans utiliser de séparateurs.
  • concat_ws() : concatène les valeurs à l'aide d'un délimiteur facultatif, en ajoutant des délimiteurs uniquement entre les valeurs non NULL.

La volatilité des fonctions de concat() et concat_ws() est STABLE, ce qui signifie que ses résultats peuvent changer en fonction des données d'entrée. Pour les fonctions immuables, envisagez d'utiliser des techniques telles que le clonage immuable personnalisé ou la recherche en texte intégral.

Notes supplémentaires :

    • L'opérateur
    • n'est pas un opérateur de concaténation de chaînes valide dans PostgreSQL ou SQL standard. Cela ne fonctionne qu'avec les produits Microsoft.
  • Il est recommandé d'utiliser text ou varchar pour stocker des chaînes au lieu des types de données caractère(n) ou char(n).

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