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 :

Oracle tester une colonne si présence de caractère non numériques


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
    Mars 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 64
    Par défaut Oracle tester une colonne si présence de caractère non numériques
    Bonjour
    Voila dans ma table j'ai une colonne définie en varchar2 mais qui en fait ne devrait contenir que des données numériques.
    Je n'arrive pas à trouver la requête qui me permette de lister les lignes dont cette colonne contient des données alpha.

    select * from mytable where mycolonne ???????
    Quelqu'un peut-il me dépanner?
    merci

  2. #2
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select * 
    from mytable 
    where length(translate(mycolonne, "a1234567890", "a") is not null;
    Sinon tu peux toujours faire une procédure stockée :
    http://www.developpez.net/forums/sho...ghlight=is_num

  3. #3
    Membre émérite Avatar de philcero
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Septembre 2007
    Messages
    528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2007
    Messages : 528
    Par défaut
    Plus exactement (Test de numérique à la mode Oracle) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM matable
    where LENGTH(TRIM(TRANSLATE(macolonne, ' +-.0123456789', ' ')))!=null;

  4. #4
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Citation Envoyé par philcero Voir le message
    Plus exactement (Test de numérique à la mode Oracle) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM matable
    where LENGTH(TRIM(TRANSLATE(macolonne, ' +-.0123456789', ' ')))!=null;
    Attention, "!= null" n'est jamais vérifié sous oracle

  5. #5
    Membre émérite Avatar de philcero
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Septembre 2007
    Messages
    528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2007
    Messages : 528
    Par défaut
    Des relants de PHP se sont insérés dans ma conception du monde Oracle, ...


  6. #6
    Membre expérimenté Avatar de JerryMouse
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 215
    Par défaut
    Crée d'abord une fonction stockée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Create Function EstNumerique(Chaine Varchar2) Return Boolean Is
     Valeur Number;
    Begin
      Valeur := To_Number(Chaine);
      Return True;
    Exception
      When Value_Error Then Return False;
    End;
    Ensuite, Tu utilise la requete suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM MaTable
    WHERE Not EstNmerique(MaColonne)

  7. #7
    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
    Citation Envoyé par philcero Voir le message
    Plus exactement (Test de numérique à la mode Oracle) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM matable
    where LENGTH(TRIM(TRANSLATE(macolonne, ' +-.0123456789', ' ')))!=null;
    Le problème de ce code c'est que tu peux avoir une chaine '1+3-45..45 88833++4---' qui passera.

  8. #8
    Membre émérite Avatar de philcero
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Septembre 2007
    Messages
    528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2007
    Messages : 528
    Par défaut
    Pas bête, c'est vrai que j'ai oublié une base dans notre métier.

    NE JAMAIS FAIRE CONFIANCE A l'INTELLIGENCE D'UN UTILISATEUR !!!


  9. #9
    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
    J'en ai une autre : Ne jamais croire un utilisateur sur parole !

  10. #10
    Membre expérimenté Avatar de JerryMouse
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 215
    Par défaut
    Ah Oui, C'est même une solution similaire qu'il a proposé.
    Citation Envoyé par plaineR Voir le message
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select * 
    from mytable 
    where length(translate(mycolonne, "a1234567890", "a") is not null;
    Sinon tu peux toujours faire une procédure stockée :
    http://www.developpez.net/forums/sho...ghlight=is_num

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

Discussions similaires

  1. [11gR2] Modifier une colonne en enlevant le caractère virtuel
    Par Hobbi1 dans le forum SQL
    Réponses: 2
    Dernier message: 27/02/2014, 21h54
  2. Réponses: 2
    Dernier message: 10/11/2013, 19h09
  3. Calcul de la somme d'une colonne apres la derniere ligne non vide
    Par lilp1 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 05/06/2009, 11h14
  4. tester une chaine pour savoir si elle est numérique ?
    Par _MattU_ dans le forum VBA Access
    Réponses: 4
    Dernier message: 02/06/2008, 15h47
  5. Interdire une frappe d'un caractére non numérique
    Par fatati dans le forum C++Builder
    Réponses: 13
    Dernier message: 12/12/2006, 09h56

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