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 :

[Oracle 9i] Test precis sur contenu d'une sous-chaine dans une chaine de caractère


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 3
    Points : 5
    Points
    5
    Par défaut [Oracle 9i] Test precis sur contenu d'une sous-chaine dans une chaine de caractère
    Bonjour,

    Voila, je voudrais savoir à l'aide de quelles fonction / quels opérateurs
    je pourrais tester la présence d'une chaine de caractère située dans la seule partie terminale d'une adresse email.

    Par exemple comment SELECTer les seuls enregistrements d'une table présentant la chaine "DOM" ou "dom" après le "@" dans le champ EMAIL du genre "tartampion@domaine.fr"["tartampion@domaine.fr" ==> oui / "tartampiondom@free.fr"==> non]

    La fonction 'like' ne suffit pas car je ne m'interresse qu'à ce qui est situé après le "@"...

    Pas immédiat pour bibi , notamment je ne vois pas quelle fonction SQL retourne le rang (x) de la sous-chaine 'n' (ici 'dom') au sein de la chaine 'm' (ici sous-chaine du champ EMAIL situé à droite de '@').

    Merci si idée.
    Zeb

  2. #2
    Membre éclairé
    Avatar de efficks
    Inscrit en
    Septembre 2005
    Messages
    712
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 712
    Points : 776
    Points
    776
    Par défaut
    2 options :
    La meilleure est l'utilisation d'expressions régulières si ton système le permet. Tu recherches :
    Sinon ceci devrait marché à quelques modifications près
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT champ
    FROM table
    WHERE champ = '%@%'+recherche+'%'
    *Remplacer rechercher par la chaîne recherchée

    Pour trouver l'emplacement de la chaîne je crois que tu devras construire la propre fonction.

  3. #3
    Futur Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 3
    Points : 5
    Points
    5
    Par défaut
    Bjr,

    Merci pour ces éléments.
    Je me suis finalement dépatouillé, en fait ds ma "soluce" et surtout sur mon Oracle 9i la syntaxe diffère un peu.
    Sans passer par la compéhension des expr. régulières et avec l'opérateur "|" à la place du "+" ça donne ici dans mon cas (exemple recherché après le "@": chaîne "ville") :
    ---------------------
    select EMAIL from CUSTOMER
    where (
    (EMAIL like '%ville%') AND (instr(EMAIL,'@') < instr(EMAIL,'ville'))
    );
    ---------------------
    Peut-être un peu capillo-tracé , mais bon.... soyons fou !!!
    Puisque ça marche...

    a+
    zebulon 9

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/08/2011, 18h23
  2. Réponses: 82
    Dernier message: 05/02/2011, 14h34
  3. Réponses: 6
    Dernier message: 13/11/2009, 16h06
  4. Réponses: 28
    Dernier message: 22/09/2005, 11h57
  5. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/08/2005, 21h24

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