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 :

[ORACLE] fonction TO_NUMBER


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 24
    Par défaut [ORACLE] fonction TO_NUMBER
    Oracle 10g EE // sql devloper 1.5.5

    Bonjour,

    Je possède deux tables TABLE1 et TABLE2 structurées comme suit:

    COMMUNE VARCHAR2(100 BYTE)
    L_COMMUNE VARCHAR2(100 BYTE)
    DCLT VARCHAR2(100 BYTE)
    L_DCLT VARCHAR2(100 BYTE)
    NBFLUX_C06_ACTOCC15P VARCHAR2(100 BYTE)

    le champ NBFLUX_C06_ACTOCC15P contient des chiffres à virgule dans la première (321,654) et à point dans la deuxième (987.5456).

    Je voudrais intégrer l'une de ces tables dans une tierce dont de dernier champ est numérique. Pour cela j'ai créé la table RESULTAT suivante:

    COMMUNE VARCHAR2(100 BYTE)
    L_COMMUNE VARCHAR2(100 BYTE)
    DCLT VARCHAR2(100 BYTE)
    L_DCLT VARCHAR2(100 BYTE)
    NBFLUX_C06_ACTOCC15P FLOAT

    J'exécute le de code suivant :

    INSERT INTO RESULTAT (commune, l_commune, dclt, l_dclt, nbflux_c06_actocc15p)
    SELECT commune, l_commune, dclt, l_dclt, to_number(nbflux_c06_actocc15p)
    FROM TABLE1;

    (idem pour TABLE2)

    et obtiens la même erreur pour les deux tables d'origines :

    ORA-01722 : Nombre non valide


    Merci de me renseigner sur la syntaxe de la conversion.

  2. #2
    Nouveau membre du Club
    Inscrit en
    Février 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 7
    Par défaut
    Comment a tu déclarer nbflux_c06_actocc15p dans ta table résultat?

    Je pense que si nbflux_c06_actocc15p est déclaré en NUMBER (6,3) ca devrait passer...enfin avec l'exemple que tu as donné!

  3. #3
    Nouveau membre du Club
    Inscrit en
    Février 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 7
    Par défaut
    quelle est la taille maxi de NBFLUX_C06_ACTOCC15P dans la table1?

  4. #4
    Invité
    Invité(e)
    Par défaut
    c'est pratique de stocker des nombres dans du varchar2...
    Quelle idée !

    Le plus intelligent serait de stocker ces valeurs dans un champ de type number...
    Après pourquoi faire simple...

    Une piste à ton problème :
    http://www.developpez.net/forums/d87...liers-decimal/

  5. #5
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 24
    Par défaut
    Citation Envoyé par Jerome_Mtl Voir le message
    c'est pratique de stocker des nombres dans du varchar2...
    Quelle idée !

    Le plus intelligent serait de stocker ces valeurs dans un champ de type number...
    Après pourquoi faire simple...
    Merci du conseil Jerom j'ai utilisé le sqloader à partir d'un fichier csv et ça ne passait qu'avec un varchar, j'avais la même erreur quand je mettais un champs numérique . Je me suis dis que c'était peut-être aussi simple dé régler le problème directement dans oracle, non?

    Bah non !!
    J'ai crée une table

    CREATE TABLE RESULTAT(
    COMMUNE VARCHAR2(5 BYTE),
    L_COMMUNE VARCHAR2(100 BYTE),
    DCLT VARCHAR2(5 BYTE),
    L_DCLT VARCHAR2(100 BYTE),
    NBFLUX_C06_ACTOCC15P NUMBER (15,15)
    );

    Car NUMBER(6,3) ou NUMBER(9,9) me renvoyait toujours la même erreur. Et bien pareil pour NUMBER(15,15). je peux difficillement savoir quelle sont les plus grandes valeurs car il y a 800 000 enregistrements et c'est du varchar (comme dirait Jerom :p).

    Je suis sur que les pro en sql que vous êtes (que je ne suis pas) allez me sortir une requête de sélection des deux enregistrements avec le plus grand nombre de chiffres avant et idem après la virgule. Je doute que ça dépasse 15 chiffres, mais bon.

    Merci pour tes conseils buncha. Jerom, j'étudies ton lien de suite.

Discussions similaires

  1. Probleme avec la fonction:TO_NUMBER
    Par agdid04 dans le forum Débuter
    Réponses: 4
    Dernier message: 13/03/2008, 14h31
  2. [Oracle] Fonction to_date
    Par Run_974 dans le forum Langage SQL
    Réponses: 10
    Dernier message: 16/08/2007, 17h16
  3. [Oracle] Fonction sur nombre
    Par dinver78 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 05/07/2007, 11h38
  4. [Oracle] fonction pl/sql pour calcul pwd
    Par shaun_the_sheep dans le forum PL/SQL
    Réponses: 7
    Dernier message: 02/06/2006, 15h38
  5. [Oracle / Fonction hachage] Fonction de hachage SHA / MD5
    Par shaun_the_sheep dans le forum Oracle
    Réponses: 8
    Dernier message: 26/01/2006, 08h58

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