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 :

Problème de conversion vers number [11g]


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 42
    Par défaut Problème de conversion vers number
    Bonjour,
    j'ai un problème de conversion vers un NUMBER, je comprend pas trop d'ou il vient le problème,(erreur numérique ou erreur sur une valeur erreur de conversion des caractères en chiffres)

    ma fonction permet de convertir un varchar en number ex : 1.500,36 -> 1500.36

    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
    FUNCTION CONVERT_PRICE
        (
        PRICE IN varchar2
        ) return number
        IS
        V_prix varchar2(255);
        droite varchar2(255);
        gauche varchar2(255);
        V_result Number(15,2);
        BEGIN
     
         V_prix := replace(PRICE,',','.');
     
         select replace(SUBSTR(V_prix, 1,INSTR(V_prix, '.',-1) ),'.','') into gauche from dual ;
     
         select SUBSTR(V_prix, INSTR(V_prix, '.',-1)+1) into droite from dual ;
     
        V_prix := gauche || '.' || droite;
     
        V_result:=TO_NUMBER(V_prix,'9999999999.99');
     
        return V_result;
     
        END;

    HEeeeeeeeelp please.
    Merci d'avance

  2. #2
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 2 005
    Par défaut
    Tu ne dis pas où est ton erreur dans le message : pb de remplacement de . par , ou de , par . ou bien conversion CHAR/NUMBER KO?

    Plutôt que ton code assez long, essaye ceci : ça marchera avec ton exemple.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select REGEXP_REPLACE(replace('1.500,36',',', '.'), '.', '', 1, 2) from dual;
    REGEXP_
    -------
    1500.36
    1 row selected.
    C'est une idée de départ mais si tu as plus de 2 . dans le nombre, ça ne passera pas... mais bon, il est tard et je dois partir

  3. #3
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 136
    Par défaut
    En repartant de l'idée de Ikebukuro et en remplaçant dans le bon ordre, ça donnerait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select replace(replace('1.500,36', '.', ''), ',', '.') from dual;
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  4. #4
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Bonsoir,

    Sinon, trouvé sur "docs.oracle.com" (en cherchant ce qui a un rapport avec TO_NUMBER):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT TO_NUMBER ('1.500,36', '9G999D99', ' NLS_NUMERIC_CHARACTERS = '',.''') my_number FROM DUAL
    A tester peut être ...

  5. #5
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 42
    Par défaut
    Citation Envoyé par Ikebukuro Voir le message
    Tu ne dis pas où est ton erreur dans le message : pb de remplacement de . par , ou de , par . ou bien conversion CHAR/NUMBER KO?

    Plutôt que ton code assez long, essaye ceci : ça marchera avec ton exemple.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select REGEXP_REPLACE(replace('1.500,36',',', '.'), '.', '', 1, 2) from dual;
    REGEXP_
    -------
    1500.36
    1 row selected.
    C'est une idée de départ mais si tu as plus de 2 . dans le nombre, ça ne passera pas... mais bon, il est tard et je dois partir
    Bonjour Ikebukuro,
    oups non ça marche pas ton code dans le cas 129.36, en faite moi j'ai un champs char ou je peux trouver par exp: 15.200.36 ou 15.200,36 ou 15 ou 25.36 ou 25,36 ou 1.35 ou 1,35 ou 1.200.200,50 ou 1.200.200.50
    et une fois je met bien mon char dans le bon format réel je veux le convertir en number et a ce moment ça plante.

  6. #6
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 2 005
    Par défaut
    Ce serait bien de nous donner le message d'erreur car selon toi le remplacement des . et , est OK mais c'est lors de la conversion du CHAR en NUMBER que ça plante. Il y a un code erreur Oracle?

  7. #7
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 42
    Par défaut
    Citation Envoyé par Ikebukuro Voir le message
    Ce serait bien de nous donner le message d'erreur car selon toi le remplacement des . et , est OK mais c'est lors de la conversion du CHAR en NUMBER que ça plante. Il y a un code erreur Oracle?
    Bonjour
    ci dessous l'erreur
    ORA 06502 : PL/SQL erreur numerique ou erreur sur une valeur.
    Merci

  8. #8
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Citation Envoyé par perrotta Voir le message
    Bonjour
    ci dessous l'erreur
    ORA 06502 : PL/SQL erreur numerique ou erreur sur une valeur.
    Merci
    Bonjour,
    Et mon "to_number" avec les NLS_NUMERIC_CHARACTERS ne fonctionne pas dans ton cas ?

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

Discussions similaires

  1. [2008R2] Problème de conversion vers type Numeric
    Par nazimb dans le forum SSIS
    Réponses: 6
    Dernier message: 30/09/2012, 16h29
  2. [FOP] Problème de conversion xml/xsl vers pdf
    Par Shadow aok dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 02/03/2006, 10h41
  3. Problème de conversion decimal vers Hexa
    Par Elbarto dans le forum C++
    Réponses: 1
    Dernier message: 06/02/2006, 19h37
  4. [MFC] Problème de conversion CString vers Char *
    Par Darkenshin dans le forum MFC
    Réponses: 10
    Dernier message: 02/12/2005, 14h42
  5. [VB.net]problème de conversion de code c# vers VB.net
    Par cladsam dans le forum Windows Forms
    Réponses: 2
    Dernier message: 18/10/2005, 14h07

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