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 :

Chaine en Number


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Février 2008
    Messages
    457
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 457
    Par défaut Chaine en Number
    Bonjour à tous,

    Dans une de mes tables, j'ai une colonne en varchar2.
    Cette colonne ne contient malgré tout que des nombres ou NULL .
    Je désire tester si la valeur est > 50.. mais je suis toujours confronté à une erreur "Nombre non valide".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    select cl_pct_ci from myTable where id = 2;
    -> 55.555555556
     
    select to_number('55.555555556','.') from dual;
    -> "Nombre non valide".
    select to_number('55.555555556','99.9999') from dual;
    -> "Nombre non valide".
    select to_number('55.555555556','99.999999999') from dual;
    -> 55,555555559
    select to_number(cl_pct_ci,'99.999999999') from myTable where id=2;
    -> "Nombre non valide".
    à m'en tirer les cheveux
    J'ai testé avec nvm, to_char.. sans succès

  2. #2
    Membre chevronné
    Avatar de argoet
    Inscrit en
    Mai 2002
    Messages
    582
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 582
    Par défaut
    Faites une recherche sur NLS_NUMERIC_CHARACTERS

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT to_number('55.555555556') from dual;
    SELECT to_number('55.555555556') from dual
                     *
    ERROR at line 1:
    ORA-01722: invalid number
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER session SET nls_numeric_characters='. ';
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT to_number('55.555555556') from dual;
    TO_NUMBER('55.555555556')
    -------------------------
                   55.5555556
    Un début de réponse ici nls_numeric_characters/

  3. #3
    Membre éclairé
    Inscrit en
    Février 2008
    Messages
    457
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 457
    Par défaut
    Citation Envoyé par argoet Voir le message
    Faites une recherche sur NLS_NUMERIC_CHARACTERS

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT to_number('55.555555556') from dual;
    SELECT to_number('55.555555556') from dual
                     *
    ERROR at line 1:
    ORA-01722: invalid number
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER session SET nls_numeric_characters='. ';
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT to_number('55.555555556') from dual;
    TO_NUMBER('55.555555556')
    -------------------------
                   55.5555556
    Un début de réponse ici nls_numeric_characters/
    Est-ce que je ne risque pas de provoquer des erreurs dans mes autres applications (requêtes) en modifiant ceci?

  4. #4
    Membre chevronné
    Avatar de argoet
    Inscrit en
    Mai 2002
    Messages
    582
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 582
    Par défaut
    Non si vous travaillez comme ceci
    en précisant le format du nombre à prendre en compte

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select to_number('55.55555556','99.99999999999999','NLS_NUMERIC_CHARACTERS=''. ''') from dual;

  5. #5
    Membre éclairé
    Inscrit en
    Février 2008
    Messages
    457
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 457
    Par défaut
    Je ne comprends pas..
    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
     
     
    SQL> select * from tbtest;
     
    fieldTest
    --------------------
    55.555555559
     
     
     
    SQL> select count(*) from tbtest where to_number(fieldTest,'99.999999999','NLS_NUMERIC_CHARACTE
    RS=''. ''') > 50;
     
    ERREUR à la ligne 1 :
    ORA-01722: Nombre non valide
     
     
    SQL> select count(*) from dual where to_number('55.555555559','99.999999999','NLS_NUMERIC_CHARACTERS
    =''. ''') > 50;
     
      COUNT(*)
    ----------
             1

  6. #6
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    vérifie les espaces avant et après
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT fieldTest, '#'||fieldTest || '#', dump(fieldtest) FROM tbtest;

Discussions similaires

  1. recuperer champ number dans une chaine
    Par pepitoluna dans le forum Oracle
    Réponses: 7
    Dernier message: 28/02/2011, 17h21
  2. tri de liste chainée
    Par RezzA dans le forum C
    Réponses: 7
    Dernier message: 26/01/2003, 20h25
  3. [TP]lire une ligne de l'ecran et la stocker dans une chaine
    Par Bleuarff dans le forum Turbo Pascal
    Réponses: 26
    Dernier message: 02/07/2002, 10h08
  4. Réponses: 3
    Dernier message: 12/06/2002, 21h15
  5. Probleme sur les chaines de caractere
    Par scorpiwolf dans le forum C
    Réponses: 8
    Dernier message: 06/05/2002, 19h01

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