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 :

Conversion varchar en number


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 124
    Par défaut Conversion varchar en number
    bonjour,
    je galere sur la conversion d'un une chaine de caractere que je veux convertir en number avec to_number(c2,'999999999.99') c2 est de type numeric(11,2).
    je sous oracle 10g et- je travail avec utl_file.
    si quelqu'un a une idée a me proposèe , je suis preneur.
    merci d'avance
    j'ai fait ça et sa marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SQL> select to_number(9/2) from dual;
     
    TO_NUMBER(9/2)
    --------------
               4,5

  2. #2
    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
    Oui et ? C'est quoi le problème si ça marche

  3. #3
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Peut-être que c2 contient : "9/2" .....

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 124
    Par défaut
    il ne me donne 0 au lieu de 0.00 quand je fait to_number(c2,'99.99');
    ps c2=0000

  5. #5
    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
    c'est un problème d'affichage dans ce cas est pas de conversion.

    Sous SQL*Plus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SQL> select to_number(9/2) nbr from dual;
     
           NBR
    ----------
           4.5
     
    SQL> COL nbr FORMAT 9.90 
    SQL> select to_number(9/2) nbr from dual;
     
      NBR
    -----
     4.50
    Ou alors il faut remettre en char (un nombre n'a pas de format, c'est un nombre c'est tout) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SQL> select to_char(9/2,'9.90') from dual;
     
    TO_CH
    -----
     4.50

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 124
    Par défaut
    c'est parce que j'essai de faire un insert ds un champ typé number(11,2) avec une chaine egale à 000000000.00 sans succes
    voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     begin
    f := utl_file.fopen(rep,'ventes.txt','R');
    utl_file.get_line(f,s);
    date:=substr(s,7,8);
    nbr:=sUbstr(s,15);
    dbms_output.put_line('FICHIER EXTRAIT LE');
    dbms_output.put_line(date);
    dbms_output.put_line('NOMBRE DE LIGNE:');
    dbms_output.put_line(nbr);
    loop
                utl_file.get_line(f,s);
                c1:=substr(s,1,2);
               c2:=substr(s,3,3);
                c3:=substr(s,6,6);
                c4:=substr(s,12,1);
                c5:=substr(s,13,1);
                c6:=substr(s,14,1);
                c7:=substr(s,15,4);
                c8:=substr(s,19,7);
                c91:=substr(s,26,9);
                c92:=substr(s,35,2);
                c9:=c91||'.'||c92;
                c101:=substr(s,37,9);
                c102:=substr(s,46,6);
                c10:=c101||'.'||c102;
                c11:=substr(s,52,7);
                c12:=substr(s,59,11);
                c13:=substr(s,70,15); 
     insert into dwh_roy_ventes values(c1,to_number(c2/1000),
                c3,to_number(c4),to_number(c5),to_number(c7),
                c8,to_number(c9/1000),to_number(c10/1000),c11,to_number(c12),to_number(c13));
                dbms_output.put_line(c9);
    end loop;
     
     
     
                dbms_output.put_line(to_number(c10,'999999999.999999'));
    utl_file.fclose(f);
    EXCEPTION
    when NO_DATA_FOUND
    then 
    dbms_output.put_line('extraction termine');
    WHEN others
    THEN
    dbms_output.put_line(SQLERRM);
    UTL_FILE.FCLOSE_ALL; 
    end;

  7. #7
    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
    Citation Envoyé par nabelou1 Voir le message
    sans succes
    t'aurait pas un message d'erreur ?

    à tout les coups c'est le . au lieu de , le problème

  8. #8
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Citation Envoyé par nabelou1 Voir le message
    il ne me donne 0 au lieu de 0.00 quand je fait to_number(c2,'99.99');
    ps c2=0000
    Peut-être pourriez-vous donner tous les éléments dès le début, on gagnerait du temps.

  9. #9
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    To_Number(9/2) ? Ca doit faire des conversions implicite!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT 9/2, to_number(9/2), dump(to_number(9/2)), dump(9/2) FROM dual
    /
           9/2 TO_NUMBER(9/2) DUMP(TO_NUMBER(9/2))  DUMP(9/2)
    ---------- -------------- --------------------- ---------------------
           4.5            4.5 Typ=2 Len=3: 193,5,51 Typ=2 Len=3: 193,5,51

    Purpose
    TO_NUMBER converts char, a value of CHAR, VARCHAR2, NCHAR, or NVARCHAR2 datatype containing a number in the format specified by the optional format model fmt, to a value of NUMBER datatype.


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

Discussions similaires

  1. Conversion VARCHAR to NUMBER
    Par wissem.ba dans le forum SQL
    Réponses: 5
    Dernier message: 17/02/2011, 08h02
  2. Conversion de varchar en number
    Par nathieb dans le forum PL/SQL
    Réponses: 7
    Dernier message: 24/10/2008, 11h03
  3. Conversion varchar en date
    Par kaboume dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 18/08/2006, 16h29
  4. [T-SQL] Conversion varChar en timeStamp
    Par Thig dans le forum Adaptive Server Enterprise
    Réponses: 6
    Dernier message: 27/10/2005, 12h11
  5. Conversion VARCHAR vers INT
    Par Slash dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 17/05/2005, 10h43

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