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

Langage SQL Discussion :

Comment tester si un champ est un nombre


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Inscrit en
    Septembre 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Comment tester si un champ est un nombre
    Je cherche à tester si un champ, de type caractères, est un nombre ou pas : : . C'est pour une requête SQL en oracle

    Merci de m'aider !

  2. #2
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Essaie de la transtyper dans une bloc try..except

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    var
      x : Float;
     
    begin
    ...
    try
      x := StrToFloat (MonChamp);
      ShowMessage ('Nombre');
    except
       ShowMessage ('Pas nombre')
    end;
    Roland
    Roland

  3. #3
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Je me croyais dans le forum Delphi. Ma réponse est donc sans doute à côté

    Roland
    Roland

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut Re: Comment tester si un champ est un nombre
    Citation Envoyé par the kikouyou
    Je cherche à tester si un champ, de type caractères, est un nombre ou pas : : . C'est pour une requête SQL en oracle

    Merci de m'aider !
    Tiens... mais que fait cette question dans SQL au lieu d'Oracle ?

  5. #5
    Candidat au Club
    Inscrit en
    Septembre 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par rsc
    Je me croyais dans le forum Delphi. Ma réponse est donc sans doute à côté
    Roland
    Effectivement, c'est loin d'être du SQL. Merci pour l'effort.

  6. #6
    Candidat au Club
    Inscrit en
    Septembre 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Re: Comment tester si un champ est un nombre
    Citation Envoyé par orafrance
    Tiens... mais que fait cette question dans SQL au lieu d'Oracle ?
    Parce que c'est une question de SQL ... même si je précise que je travaille sous Oracle...

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    Sinon voila une méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    create or replace function is_number(p_check VARCHAR2) return BOOLEAN is
    dummy number;
    begin
    dummy := to_number(p_check);
    RETURN TRUE;
    exception
    when others then
    if SQLCODE = -6502 THEN
    return FALSE;
    else
    RETURN TRUE;
    end if;
    end;
    /
    Pour l'utiliser par exemple :

    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
    SQL> ;
      1  begin
      2  if is_number('&val') then
      3  dbms_output.put_line('OK');
      4  else
      5  dbms_output.put_line('KO');
      6  end if;
      7* end;
    SQL> /
    Entrez une valeur pour val : 2
    ancien   2 : if is_number('&val') then
    nouveau   2 : if is_number('2') then
    OK
     
    Procédure PL/SQL terminée avec succès.
     
    SQL> /
    Entrez une valeur pour val : toto
    ancien   2 : if is_number('&val') then
    nouveau   2 : if is_number('toto') then
    KO
     
    Procédure PL/SQL terminée avec succès.
     
    SQL>

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut Re: Comment tester si un champ est un nombre
    Citation Envoyé par the kikouyou
    Citation Envoyé par orafrance
    Tiens... mais que fait cette question dans SQL au lieu d'Oracle ?
    Parce que c'est une question de SQL ... même si je précise que je travaille sous Oracle...
    non c'est une question spécifique au SGBD

  9. #9
    Membre confirmé
    Avatar de Higgins
    Inscrit en
    Juillet 2002
    Messages
    520
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 520
    Points : 543
    Points
    543
    Par défaut Re: Comment tester si un champ est un nombre
    Citation Envoyé par the kikouyou
    Citation Envoyé par orafrance
    Tiens... mais que fait cette question dans SQL au lieu d'Oracle ?
    Parce que c'est une question de SQL ... même si je précise que je travaille sous Oracle...
    A ma connaissance il n'existe aucune fonction SQL standard pour çà.
    Les solutions seront certainement différentes en fonction du SGBDR. Le forum Oracle semble donc être plus adapté
    7 fois à terre, 8 fois debout

  10. #10
    Candidat au Club
    Inscrit en
    Septembre 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Pour ceux que cela intéresse j'ai trouvé cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    length(translate(trim(column_name),' +-.0123456789',' '))
    retourne 0 si c'est un nombre...

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    ATTENTION

    il manque ',' pour le séparateur de milliers ou pour les décimales

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    length(translate(trim(column_name),' +-.,0123456789',' '))

  12. #12
    Candidat au Club
    Inscrit en
    Septembre 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Une autre variante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    instr(translate(NOM_SRV, 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ','XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'),'X')

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    cette dernière proposition ne fonctionne pas puisqu'elle ne tient pas compte des symboles : *@ç etc...

    Le test sur l'erreur Oracle tel que je te l'ai proposé me semble la plus infaillible

  14. #14
    Invité
    Invité(e)
    Par défaut Correctif
    Citation Envoyé par the kikouyou Voir le message
    Pour ceux que cela intéresse j'ai trouvé cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    length(translate(trim(column_name),' +-.0123456789',' '))
    retourne 0 si c'est un nombre...
    Et dix ans après, personne n'a vraiment songé à corriger la faute, que je corrige à présent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    length(trim(translate(column_name,' ,+-.0123456789',' ')))
    Le translate va transformer la regexp en espaces, ce que le trim() va dégager, ce que le length() va compter.
    Si 0, c'est un format de nombre. CQFD

    Testé et approuvé sinon ! A mettre dans une FAQ
    Dernière modification par ced ; 20/07/2014 à 16h32.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/05/2015, 18h28
  2. comment tester si un caratère est un nombre?
    Par nadine01 dans le forum Débuter
    Réponses: 4
    Dernier message: 26/11/2013, 17h11
  3. Comment tester si un repertoire est vide sous Linux
    Par chouchouappc dans le forum Linux
    Réponses: 3
    Dernier message: 24/02/2005, 13h03
  4. [Access] Comment savoir qu'un champs est vide ?
    Par Oberown dans le forum ASP
    Réponses: 9
    Dernier message: 25/10/2004, 11h47
  5. Tester si un champ est NULL
    Par titititi007 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 19/06/2003, 11h17

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