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 :

Petite expression régulière sur email


Sujet :

SQL Oracle

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 98
    Par défaut Petite expression régulière sur email
    Bonjour,
    j'ai fais l'expression régulière pour vérifier mon mail de la facon suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT email from int_i1_temp_em
    WHERE 
    REGEXP_LIKE (email, '([A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4})');
    Ca marche super bien.
    Mon souci c'est que je dois vérifier en plus que le champs ne dépasse pas 64 caractères.
    J'ai bien essayé de mettre des parenthèse sur tout le groupe, mais bon ca fait q'il peut se répeter 64x.. ce qui n'est pas le but.

    Un petit coup de pouce ne serait pas de refus
    merci.

  2. #2
    Membre chevronné Avatar de icsor
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2008
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2008
    Messages : 258
    Par défaut
    Bonjour,

    ne pouvez vous pas rajouter une clause dans le where, comme par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    AND LENGTH (email) <= 64

  3. #3
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Essayez ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT email
      FROM int_i1_temp_em
     WHERE LENGTH(REGEXP_SUBSTR(email, '([A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4})')) <= 64

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 98
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT email from int_i1_temp_em
    WHERE 
    (REGEXP_LIKE (email, '([A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4})'))
    AND Length(email)<=64;
    Super ca le fait
    Merci.

    @Waldar: ca me retourne une erreur de faire comme tu me montres
    "SQL command not properly ended"

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    J'ai peut-être mal compris votre besoin.
    Avec Oracle 10g Express :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    WITH int_i1_temp_em AS
    (
    select 1 as id, 'FRITZOUNE@DEVELOPPEZ.COM' as email from dual union all
    select 2, 'EMAIL_NETTEMENT_TRES_BEAUCOUP_PLUS_LONGUE@TOUJOURS_DEVELOPPEZ.COM'  from dual union all
    select 3, 'TITITITITITI;TUTUTUTUTU;TATATATA;UNE_ADRESSE_VALIDE@DEVELOPPEZ.COM' from dual
    )
    SELECT id, email
      FROM int_i1_temp_em
     WHERE REGEXP_LIKE (email, '([A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4})')
       AND length(email) <= 64;
     
    ID      EMAIL                                                              
    ------- ------------------------------------------------------------------ 
    1       FRITZOUNE@DEVELOPPEZ.COM
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    WITH int_i1_temp_em AS
    (
    select 1 as id, 'FRITZOUNE@DEVELOPPEZ.COM' as email from dual union all
    select 2, 'EMAIL_NETTEMENT_TRES_BEAUCOUP_PLUS_LONGUE@TOUJOURS_DEVELOPPEZ.COM'  from dual union all
    select 3, 'TITITITITITI;TUTUTUTUTU;TATATATA;UNE_ADRESSE_VALIDE@DEVELOPPEZ.COM' from dual
    )
    SELECT id, REGEXP_SUBSTR(email, '([A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4})') email
      FROM int_i1_temp_em
     WHERE LENGTH(REGEXP_SUBSTR(email, '([A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4})')) <= 64;
     
    ID      EMAIL                                                              
    ------- ------------------------------------------------------------------ 
    1       FRITZOUNE@DEVELOPPEZ.COM                                           
    3       UNE_ADRESSE_VALIDE@DEVELOPPEZ.COM

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 98
    Par défaut
    aaah
    j'avais lu un peu top vite et pas remarqué que
    REGEXP_LIKE s'etait transformé en
    REGEXP_SUBSTR.

    Comme le résultat est le même pour ces 2 méthodes, est-ce qu'il y en a une plus rapide pour le système ?

  7. #7
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Non justement, le résultat n'est pas le même.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 98
    Par défaut
    Mais le résultat ne différe pas parce que dans le 3eme string, il contient d'autres données que l'email et vous faites un match de ce qui peut correspondre à lemail, puis vous faites un test sur la longueur ?

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

Discussions similaires

  1. [RegEx] Expression régulière sur lien hypertexte
    Par doubiremi dans le forum Langage
    Réponses: 6
    Dernier message: 21/09/2007, 14h48
  2. [RegEx] Expression régulière sur une date
    Par mattyeux dans le forum Langage
    Réponses: 1
    Dernier message: 21/09/2007, 11h16
  3. Expression régulière sur un ls
    Par goeland444 dans le forum Linux
    Réponses: 3
    Dernier message: 13/02/2007, 14h47
  4. expression régulière sur flux
    Par zais_ethael dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 19/09/2006, 23h38

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