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

SQL Oracle Discussion :

Rajouter des 0 en début en fonction du nombre de caractères du champ


Sujet :

SQL Oracle

  1. #1
    Membre actif
    Homme Profil pro
    Manager de Projet SAP
    Inscrit en
    Mars 2009
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Pologne

    Informations professionnelles :
    Activité : Manager de Projet SAP
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2009
    Messages : 210
    Points : 238
    Points
    238
    Par défaut Rajouter des 0 en début en fonction du nombre de caractères du champ
    Bonjour.

    Je cherche, par requete sql, a cadrer entre un nr dans le module factures d'Oracle Financial et le nr equivalent dans le module comptabilite genererale d'Oracle Financial.

    Cote AP (module factures), le champ contient des 0 de facon a arriver a 9 caracteres. Dans le module GL (comptabilite generale), le champ contient uniquement le nr.

    Par exemple dans AP j'ai 000012546 et dans GL j'ai 12546

    De temps a autre, le champ a ete mal alimente et contient des caracteres non numeriques. Exemple 12546. ou une date au lieu du nr

    Je cherche a faire apparaitre les ecarts montants (ou l'absence du nr cote GL) entre AP et GL.

    J'ai deux solutions pour le faire :

    1) to_number sur chaque champ (cote AP et cote GL) : si le champ contient un caractere non numerique, la requete tombe en erreur

    2) rajouter des 0 dans le champ cote GL.

    Pour faire ce point 2), j'ai, dans le select, rajoute la chose suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    select
    ......
    (case length(gl.ATTRIBUTE14) when 1 then lpad(gl.ATTRIBUTE14,0,8) when 2 then lpad(gl.ATTRIBUTE14,0,7) when 3 
    then lpad(gl.ATTRIBUTE14,0,6) when 4 then lpad(gl.ATTRIBUTE14,0,5) 
    when 5 then lpad(gl.ATTRIBUTE14,0,4) when 6 then lpad(gl.ATTRIBUTE14,0,3)  
    when 7 then lpad(gl.ATTRIBUTE14,0,2) when 8 then lpad(gl.ATTRIBUTE14,0,1) else gl.ATTRIBUTE14)
    from
     
    where
    J'avais aussi essaye :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    select
    ......
    (case gl.ATTRIBUTE14 when length(gl.ATTRIBUTE14) = 1 then lpad(gl.ATTRIBUTE14,0,8) when length(gl.ATTRIBUTE14) = 2 then lpad(gl.ATTRIBUTE14,0,7) when length(gl.ATTRIBUTE14) = 3 
    then lpad(gl.ATTRIBUTE14,0,6) when length(gl.ATTRIBUTE14)=4 then lpad(gl.ATTRIBUTE14,0,5) 
    when length(gl.ATTRIBUTE14)=5 then lpad(gl.ATTRIBUTE14,0,4) when length(gl.ATTRIBUTE14)=6 then lpad(gl.ATTRIBUTE14,0,3)  
    when length(gl.ATTRIBUTE14)=7 then lpad(gl.ATTRIBUTE14,0,2) when length(gl.ATTRIBUTE14)=8 then lpad(gl.ATTRIBUTE14,0,1) else gl.ATTRIBUTE14)
    from
     
    where
    Apres avoir fait differents essais dans Toad qui m'a annonce un "missing keyword", j'ai essaye la chose suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    select
    ------
    (case length(gl.ATTRIBUTE14) when 1 then lpad(gl.ATTRIBUTE14,0,8) when 2 then lpad(gl.ATTRIBUTE14,0,7) when 3 
    then lpad(gl.ATTRIBUTE14,0,6) when 4 then lpad(gl.ATTRIBUTE14,0,5) 
    when 5 then lpad(gl.ATTRIBUTE14,0,4) when 6 then lpad(gl.ATTRIBUTE14,0,3)  
    when 7 then lpad(gl.ATTRIBUTE14,0,2) when 8 then lpad(gl.ATTRIBUTE14,0,1) else lpad(gl.ATTRIBUTE14,0,0))
    from
     
    where
    J'ai encore le message "Missing keyword".

    Comment puis-je resoudre mon probleme et rajouter des 0 pour que le champ nr dans GL ait le meme format que celui dans AP et, ainsi, cadrer ?

    Merci.
    Cdlt.

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Pas besoin de se prendre la tête LDAP gère la taille automatiquement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SQL> select lpad(12546,9,0) from dual;
     
    LPAD(1254
    ---------
    000012546

  3. #3
    Membre actif
    Homme Profil pro
    Manager de Projet SAP
    Inscrit en
    Mars 2009
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Pologne

    Informations professionnelles :
    Activité : Manager de Projet SAP
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2009
    Messages : 210
    Points : 238
    Points
    238
    Par défaut
    Merci pour cette reponse. Je vais l'utiliser pour simplifier ma requete.

    J'ai trouve pourquoi j'avais un probleme : le end avant la parenthese de fermeture n'etait pas present.

    Merci.

    Cdlt

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

Discussions similaires

  1. onkeyup : rajouter des fonctions
    Par skyser dans le forum Général JavaScript
    Réponses: 22
    Dernier message: 13/04/2012, 08h19
  2. Réponses: 3
    Dernier message: 22/02/2012, 10h45
  3. Réponses: 3
    Dernier message: 23/12/2009, 20h11
  4. Réponses: 2
    Dernier message: 28/07/2009, 16h41
  5. fonction Average dans un tableau ou on rajoute des colonnes
    Par Huubb dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/09/2006, 17h43

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