HOWTO · PostgreSQL
Convertir un entier en chaîne dans PostgreSQL
Ce tutoriel explique comment convertir un entier en chaîne dans PostgreSQL.
Sur cette page
Pour convertir un entier en chaîne dans PostgreSQL, convertissez-le en type text avec CAST(value AS text) ou avec la syntaxe PostgreSQL value::text. Utilisez l’une ou l’autre forme lorsqu’une requête a besoin d’une valeur textuelle ; utilisez CONCAT pour combiner du texte avec des valeurs d’autres types. Les extraits SQL ci-dessous montrent la syntaxe, sans résultat d’exécution.
Convertir un entier en texte avec CAST
CAST est une syntaxe SQL standard qui explicite les types source et cible. Par exemple, SELECT CAST(123 AS text) AS string_value; produit une valeur de type text contenant 123. Remplacez le littéral entier par une colonne ou une expression, par exemple CAST(order_id AS text), lorsque votre requête a besoin de cette valeur sous forme textuelle. PostgreSQL nomme son type de chaîne de caractères text ; « chaîne » est le terme général désignant la valeur représentée.
Utiliser l’opérateur de conversion :: de PostgreSQL
PostgreSQL prend également en charge l’opérateur de conversion concis ::. SELECT 123::text AS string_value; convertit le même entier vers le même type que la forme CAST. Choisissez la forme explicite lorsqu’elle rend du SQL partagé plus lisible, ou l’opérateur lorsqu’il s’intègre mieux à la requête PostgreSQL. Les deux expriment une conversion de type ; aucun ne sert à ajouter des séparateurs, du remplissage ou d’autres conventions d’affichage.
Comparer une colonne textuelle à un entier dans une clause WHERE
Supposons que quiz_score.score soit défini comme text, tandis que la valeur à comparer est un entier. Comparer directement score à 100 mélange les types texte et entier. Convertissez l’entier en text afin que les deux opérandes soient compatibles : SELECT score FROM quiz_score WHERE score = CAST(100 AS text);. La forme abrégée de PostgreSQL est WHERE score = 100::text.
Cette comparaison traite la colonne comme du texte. Par exemple, les valeurs textuelles 100 et 0100 sont distinctes, même si elles peuvent représenter le même nombre. Si vous souhaitez effectuer une comparaison numérique, ne convertissez la colonne que si toutes ses valeurs sont des entiers valides ; sinon, la conversion peut échouer. Pour une colonne déjà numérique, comparez-la à une valeur numérique au lieu de la convertir en texte.
Utiliser CONCAT pour combiner du texte et des nombres
CONCAT combine ses arguments et convertit en texte les arguments qui ne sont pas textuels pour produire le résultat combiné. Par exemple, SELECT CONCAT('The number is ', 123); construit le texte The number is 123. Cette fonction est utile pour composer une étiquette ou un message, mais ce n’est pas une troisième façon d’écrire une conversion autonome : utilisez CAST ou ::text lorsque la requête a besoin de l’entier converti lui-même. Dans PostgreSQL, CONCAT ignore les arguments NULL. Pour fournir une valeur de remplacement, utilisez COALESCE(value::text, 'fallback') lorsque value peut être d’un type non textuel ; la conversion donne aux deux arguments de COALESCE le même type.
FAQ
Quelle est la différence entre CAST et :: ? CAST(value AS text) est une syntaxe SQL standard ; value::text est une forme abrégée propre à PostgreSQL. Les deux convertissent la valeur en texte.
Peut-on convertir d’autres valeurs en texte ? PostgreSQL prend en charge la conversion de nombreux types, notamment les dates et les booléens. La représentation textuelle obtenue dépend du type source et de sa représentation de sortie.
Puis-je utiliser une conversion dans une clause WHERE ? Oui. Convertissez le paramètre ou l’expression entière en texte pour le comparer à une colonne textuelle, par exemple avec score = 100::text. Vérifiez que les valeurs comparées ont le même sens et le type voulu.