IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes PostgreSQL Discussion :

Faire un upper sur integer ne fonctionne plus depuis la 8.3 => Comment faire ?


Sujet :

Requêtes PostgreSQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 37
    Points : 22
    Points
    22
    Par défaut Faire un upper sur integer ne fonctionne plus depuis la 8.3 => Comment faire ?
    Bonjour,

    sur ma machine de production (8.1.15) je peux faire un upper sur un int :
    SELECT * from exploitation.compte where upper (compte.id_compte) = upper (742);
    ca me retourne bien une ligne alors que si je liste les fonctions upper il ne m'en parle pas :
    \df upper
    Liste des fonctions
    Schéma | Nom | Type de données du résultat | Type de données des paramètres
    ------------+-------+-----------------------------+--------------------------------
    pg_catalog | upper | text | text
    (1 ligne)


    sur ma machine de developpement (8.3.6) je ne peux pas le faire :
    SELECT * from exploitation.compte where upper (compte.id_compte) = upper (742);
    ERREUR: la fonction upper(integer) n'existe pas


    Bref un jour ma base de production migrera et evoluera en 8.3.quelque chose et j'aimerais que ma requete fonctionne toujours.

    Bien sur vous vous demandez : mais quel intéret de faire un upper la dessus ?
    Je ne vais pas rentrer dans les détails mais cela me permet d'avoir un code (pljava générant des requêtes spécifiques) générique quel que soit le type : integer ou string.

    Auriez vous une solution ?
    - une option à activer ?
    - un formatage spécial ?
    - autre ?

    Merci de votre aide
    Eric

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    178
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 178
    Points : 220
    Points
    220
    Par défaut
    Ce n'est pas très propre mais en castant en varchar ça marche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * 
    FROM exploitation.compte 
    WHERE upper (compte.id_compte::varchar) = upper (742::varchar);
    Edit : Je suis en 8.3.4

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 37
    Points : 22
    Points
    22
    Par défaut
    effectivement
    merci :

    SELECT * from exploitation.compte where upper(compte.id_compte::varchar) = 742::varchar;
    => une ligne retournée

    SELECT * from exploitation.compte where upper(compte.uid::varchar) = upper('boyere'::varchar);
    => une ligne retournée

    quel que soit le type, cela fonctionne

    merci

    PS : a ne pas montrer dans les écoles de SQL

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. 2 ports USB sur 3 ne fonctionnent plus
    Par Linkis dans le forum Composants
    Réponses: 0
    Dernier message: 11/01/2015, 12h19
  2. Apache sur xampp ne fonctionne plus
    Par weemanrock dans le forum Apache
    Réponses: 4
    Dernier message: 01/02/2012, 13h52
  3. Réponses: 1
    Dernier message: 05/09/2011, 20h44
  4. Réponses: 2
    Dernier message: 06/04/2011, 16h45
  5. [VB6][impression]Comment faire des effets sur les polices ?
    Par le.dod dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 08/11/2002, 10h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo