PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Correction :"l'opérateur n'existe pas :entier || entier » dans PostgreSQL

Si vous obtenez l'opérateur "n'existe pas :entier || entier" dans PostgreSQL, c'est probablement parce que vous essayez de concaténer deux nombres.

Si vous voulez vraiment concaténer deux nombres, le moyen le plus simple de résoudre ce problème consiste à convertir d'abord au moins l'un d'entre eux en un type de données chaîne.

Une autre façon de le faire est d'utiliser le CONCAT() fonction.

Exemple d'erreur

Voici un exemple de code qui provoque cette erreur :

SELECT 123 || 456;

Résultat :

ERROR:  operator does not exist: integer || integer
LINE 1: SELECT 123 || 456;
                   ^
HINT:  No operator matches the given name and argument types. You might need to add explicit type casts.

Solution 1

Voici un moyen rapide de résoudre ce problème :

SELECT CAST(123 AS varchar(3)) || 456;

Résultat :

123456

S'il est vrai que nous aurions pu convertir les deux nombres en une chaîne, ce n'est pas nécessaire. Tant que l'un des opérandes est une chaîne, l'opérateur de concaténation pipe pourra les concaténer.

Solution 2

Une autre façon de le faire est d'utiliser le CONCAT() fonction pour faire la concaténation :

SELECT CONCAT(123, 456);

Résultat :

123456

Cette fonction fonctionne sur des nombres sans qu'il soit nécessaire de les convertir en chaîne. La fonction le fait automatiquement (elle concatène les représentations textuelles de ses arguments par défaut).