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

DB2 Discussion :

[db2][sql]Transformer un character en numeric


Sujet :

DB2

  1. #1
    Membre habitué
    Inscrit en
    Juin 2004
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 213
    Points : 154
    Points
    154
    Par défaut [db2][sql]Transformer un character en numeric
    Salut tout le monde,

    Je voudrais une requête de ce style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     select * from matable where dec(monchamp, 5, 3, ',')<26
    Car si je ne transtype pas ce champ, lors de ma selection il me ressort des enregistrements avec comme valeur : 100,115,220 normal vu que le champ est un character!!!

    L'erreur que db2 me met est : Erreur de selection du champs pour tant lorsque je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     select * from matable where
     dec(monchamp, 5, 3, ',')<26 and code_article='123456'
    ça fonctionne (si article exsite bien sûr)

    Si quelqu'un avait la réponse merci de me le dire!

  2. #2
    jab
    jab est déconnecté
    Rédacteur
    Avatar de jab
    Homme Profil pro
    SharePoint developpeur
    Inscrit en
    Février 2004
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : SharePoint developpeur
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 1 173
    Points : 4 339
    Points
    4 339
    Par défaut
    La je vois pas
    Essaie

  3. #3
    Membre habitué
    Inscrit en
    Juin 2004
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 213
    Points : 154
    Points
    154
    Par défaut
    J'ai essayé déjà hier mais j'ai quand même refai le test ce matin on sais jamais! mais ça ne marche toujours pas. Il me mets toujours erreur de selection de la zone.

  4. #4
    Membre habitué
    Inscrit en
    Juin 2004
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 213
    Points : 154
    Points
    154
    Par défaut
    J'ai trouvé pourquoi ça plante, c'est parce que dans la table losrque j'ai une valeur non renseignée, dans la table c'est inscrit 'AD' et la fonction num plante dans ce cas la.

    Donc comment je pourrais faire pour réussir dans mon when à remplacer AD par 0 pour pouvoir le comparer à un chiffre.

  5. #5
    jab
    jab est déconnecté
    Rédacteur
    Avatar de jab
    Homme Profil pro
    SharePoint developpeur
    Inscrit en
    Février 2004
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : SharePoint developpeur
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 1 173
    Points : 4 339
    Points
    4 339
    Par défaut
    Essaie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select *
     from matable 
     where ( WHEN monchamp='AD' 
                      THEN 0 
                      ELSE  dec(monchamp, 5, 3, ',')
                 END ) < 26

  6. #6
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    1 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 473
    Points : 3 283
    Points
    3 283
    Par défaut
    Citation Envoyé par jab
    Essaie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select *
     from matable 
     where ( WHEN monchamp='AD' 
                      THEN 0 
                      ELSE  dec(monchamp, 5, 3, ',')
                 END ) < 26
    Il ne manquerait pas un CASE par hasard ...
    du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select *
     from matable 
     where ( CASE WHEN monchamp='AD' 
                      THEN 0 
                      ELSE  dec(monchamp, 5, 3, ',')
                 END ) < 26
    Et puis si jamais on a 'AE' dans monchamp, bien sûr ça ne marche plus ...
    Moi je trouve qu'on atteint les limites du SQL dans ce cas de figure et qu'il faut mieux passer par un programme (quelque soit le langage) avec du SQL imbriqué ...

  7. #7
    jab
    jab est déconnecté
    Rédacteur
    Avatar de jab
    Homme Profil pro
    SharePoint developpeur
    Inscrit en
    Février 2004
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : SharePoint developpeur
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 1 173
    Points : 4 339
    Points
    4 339
    Par défaut
    Citation Envoyé par Luc Orient
    Il ne manquerait pas un CASE par hasard ...


    C'est clair que c'est déjà du SQL de bon niveau. Par programme oui pourquoi pas mais si le SQL complexe a été créé pourquoi ne pas l'utiliser. Le tout est de voir selon l'infrastructure ce qui donne les meilleurs performances.
    Par contre si monchamp était numérique comme il semble qu'il aurait du l'être.

  8. #8
    Membre habitué
    Inscrit en
    Juin 2004
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 213
    Points : 154
    Points
    154
    Par défaut
    Merci pour vos réponses. J'ai posté en même temps sur le forum SQL
    ce qui m'a permis de trouver une réponse même si la vôtre est plus simple!!

    Encore merci.
    Je laisse le lien pour ceux qui voudraient allez voir :

    http://www.developpez.net/forums/sho...d.php?t=133208

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

Discussions similaires

  1. [DB2] SQL dynamique pour déclarer un curseur
    Par Fatah93 dans le forum DB2
    Réponses: 3
    Dernier message: 12/12/2006, 13h06
  2. [db2][sql]Requête reflexive!
    Par yoyopi dans le forum DB2
    Réponses: 2
    Dernier message: 28/04/2006, 08h08
  3. [DB2] Transtypage de character à numeric
    Par yoyopi dans le forum Langage SQL
    Réponses: 6
    Dernier message: 21/04/2006, 12h40
  4. Réponses: 5
    Dernier message: 05/01/2006, 11h17
  5. [java - SQL] transformer une Image en BLOB ?
    Par pierre.zelb dans le forum JDBC
    Réponses: 3
    Dernier message: 04/07/2005, 15h04

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