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

PL/SQL Oracle Discussion :

Comment mettre des zéros à gauche en utilisant TO_NUMBER


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Expert Oracle
    Inscrit en
    Mai 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Expert Oracle

    Informations forums :
    Inscription : Mai 2009
    Messages : 92
    Par défaut Comment mettre des zéros à gauche en utilisant TO_NUMBER
    Bonjour,

    Je voudrais forcer le format d'une variable numérique pour mettre des zéros à gauche.

    Exemple:
    112 devient 000112
    2344 devient 002344
    etc.

    Voici un bout du code que j'ai utilisé, malheureusement ça n'a pas marché:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    p_var_code NUMBER;
    p_var VARCHAR2;
     
    p_var := '000112';
    p_var_code   :=  NVL(TO_NUMBER(p_var , '000000') , '000000');
    Le résultat est toujours égal à 112, non 000112.

    A noter que j'ai le même résultat également avec la ligne suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    p_var_code   :=  NVL(TO_NUMBER(p_var , '999999') , '000000');
    Y a t-il un autre moyen pour mettre des zéros à gauche ?

    En vous remerciant d'avance

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Il faut utiliser TO_CHAR et non pas TO_NUMBER, en nombre les 0 non-significatifs disparaissent.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    select nb, to_char(nb, 'FM000000') as nb_fmt
    from
    (
    select  112 as nb from dual union all
    select 2344       from dual
    );
     
    NB	NB_FMT
    112	000112
    2344	002344

  3. #3
    Membre confirmé
    Homme Profil pro
    Expert Oracle
    Inscrit en
    Mai 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Expert Oracle

    Informations forums :
    Inscription : Mai 2009
    Messages : 92
    Par défaut
    Oui cette solution fonctionne, mais je dois retourner un NUMBER comme paramètre de sortie de ma fonction, et ce NUMBER doit être sur 6 digits !

    Quand tu dis que les 0 non-significatifs disparaissent pour les variables numériques, est-ce que ça voudrait dire qu'il n'y a aucun moyen pour les garder ?

    Merci pour ton aide

  4. #4
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    un nombre est un nombre... 12 c'est 12 c'est pas 000012. 000012 c'est une chaine de caractères. Donc non, tu ne peux pas en NUMBER.

  5. #5
    Membre confirmé
    Homme Profil pro
    Expert Oracle
    Inscrit en
    Mai 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Expert Oracle

    Informations forums :
    Inscription : Mai 2009
    Messages : 92
    Par défaut
    OK, merci pour votre aide les gars

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

Discussions similaires

  1. comment mettre des int dans une char??
    Par gronaze dans le forum C
    Réponses: 5
    Dernier message: 21/04/2006, 17h02
  2. Réponses: 10
    Dernier message: 28/03/2006, 15h10
  3. [linux] mettre des zéros devant un nombre
    Par le mage tophinus dans le forum C
    Réponses: 15
    Dernier message: 04/10/2005, 08h26
  4. Comment mettre des couleurs a printf ( )
    Par damien42 dans le forum C
    Réponses: 27
    Dernier message: 31/03/2005, 23h10
  5. Comment mettre des lignes de couleur dans une TCheckListBox ?
    Par Isa31 dans le forum Composants VCL
    Réponses: 9
    Dernier message: 31/03/2005, 08h40

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