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

PL/SQL Oracle Discussion :

comment extraire une partie d'une chaine de caractere en plsql


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 4
    Par défaut comment extraire une partie d'une chaine de caractere en plsql
    Bonjour,

    j'avais un probleme pour extraire une partie d'une chaine délimitée à gauche par '@' et à droite par '.'

    SUBSTR ne peut pas resoudre mon probleme car les parties gauche et droite ne sont pas fixes.

    par exemple :

    chaine 1 : qdhjdfgjk@machaine.jdfgdfhlkjmshlms
    chaine 2 : qdhjdfgjkfghkmlmlmf@machaine.jdfgdf


    merci d'avance pour votre aide

  2. #2
    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
    utilises les fonctions SUBSTR et INSTR

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Y'a probablement plus "fin" mais bon :
    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
    SELECT SUBSTR('user@host.com',1,INSTR('user@host.com','@')-1) "User",
    SUBSTR(
           SUBSTR('user@host.com',
                  INSTR('user@host.com','@')+1,
                  LENGTH('user@host.com') - INSTR('user@host.com','@')
                 ),
           1,
           INSTR(SUBSTR('user@host.com',
                  INSTR('user@host.com','@')+1,
                  LENGTH('user@host.com') - INSTR('user@host.com','@')
                 ),'.') - 1
          ) "Domain",
    SUBSTR('user@host.com',INSTR('user@host.com','.')+1) "Extension"
    FROM dual
    /
    et tu remplaces la chaine 'user@host.com' par ce que tu veux

    SQL>;
    1 SELECT SUBSTR('&a',1,INSTR('&a','@')-1) "User",
    2 SUBSTR(
    3 SUBSTR('&a',
    4 INSTR('&a','@')+1,
    5 LENGTH('&a') - INSTR('&a','@')
    6 ),
    7 1,
    8 INSTR(SUBSTR('&a',
    9 INSTR('&a','@')+1,
    10 LENGTH('&a') - INSTR('&a','@')
    11 ),'.') - 1
    12 ) "Domain",
    13 SUBSTR('&a',INSTR('&a','.')+1) "Extension"
    14* FROM dual
    SQL>/
    Enter value for a: qdhjdfgjkfghkmlmlmf@machaine.jdfgdf
    Enter value for a: qdhjdfgjkfghkmlmlmf@machaine.jdfgdf
    Enter value for a: qdhjdfgjkfghkmlmlmf@machaine.jdfgdf
    Enter value for a: qdhjdfgjkfghkmlmlmf@machaine.jdfgdf
    Enter value for a: qdhjdfgjkfghkmlmlmf@machaine.jdfgdf
    Enter value for a: qdhjdfgjkfghkmlmlmf@machaine.jdfgdf
    Enter value for a: qdhjdfgjkfghkmlmlmf@machaine.jdfgdf
    Enter value for a: qdhjdfgjkfghkmlmlmf@machaine.jdfgdf
    Enter value for a: qdhjdfgjkfghkmlmlmf@machaine.jdfgdf
    Enter value for a: qdhjdfgjkfghkmlmlmf@machaine.jdfgdf
    Enter value for a: qdhjdfgjkfghkmlmlmf@machaine.jdfgdf
    Enter value for a: qdhjdfgjkfghkmlmlmf@machaine.jdfgdf

    User Domain Extens
    ------------------- -------- ------
    qdhjdfgjkfghkmlmlmf machaine jdfgdf

    SQL>/
    Enter value for a: qdhjdfgjk@machaine.jdfgdfhlkjmshlms
    Enter value for a: qdhjdfgjk@machaine.jdfgdfhlkjmshlms
    Enter value for a: qdhjdfgjk@machaine.jdfgdfhlkjmshlms
    Enter value for a: qdhjdfgjk@machaine.jdfgdfhlkjmshlms
    Enter value for a: qdhjdfgjk@machaine.jdfgdfhlkjmshlms
    Enter value for a: qdhjdfgjk@machaine.jdfgdfhlkjmshlms
    Enter value for a: qdhjdfgjk@machaine.jdfgdfhlkjmshlms
    Enter value for a: qdhjdfgjk@machaine.jdfgdfhlkjmshlms
    Enter value for a: qdhjdfgjk@machaine.jdfgdfhlkjmshlms
    Enter value for a: qdhjdfgjk@machaine.jdfgdfhlkjmshlms
    Enter value for a: qdhjdfgjk@machaine.jdfgdfhlkjmshlms
    Enter value for a: qdhjdfgjk@machaine.jdfgdfhlkjmshlms

    User Domain Extension
    --------- -------- ----------------
    qdhjdfgjk machaine jdfgdfhlkjmshlms

    SQL>/
    Enter value for a: user@host.com
    Enter value for a: user@host.com
    Enter value for a: user@host.com
    Enter value for a: user@host.com
    Enter value for a: user@host.com
    Enter value for a: user@host.com
    Enter value for a: user@host.com
    Enter value for a: user@host.com
    Enter value for a: user@host.com
    Enter value for a: user@host.com
    Enter value for a: user@host.com
    Enter value for a: user@host.com

    User Doma Ext
    ---- ---- ---
    user host com

    SQL>

  4. #4
    Futur Membre du Club
    Inscrit en
    Mars 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 4
    Par défaut
    je crois que tu ne m'a pas bien compris,

    SUBSTRING ne me sert à rien car je n'ai pas de parties fixes

  5. #5
    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 m_gueye Voir le message
    je crois que tu ne m'a pas bien compris,

    SUBSTRING ne me sert à rien car je n'ai pas de parties fixes
    Tsss... j'ai bien dit SUBSTR ET INSTR
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    WITH t AS (SELECT 'qdhjdfgjk@machaine.jdfgdfhlkjmshlms' AS chaine FROM dual
    			UNION ALL
                SELECT 'qdhjdfgjkfghkmlmlmf@machaine.jdfgdf' FROM dual
                )
    SELECT chaine, 
    	SUBSTR(chaine, 1, INSTR(chaine, '@') -1) AS gauche,
    	SUBSTR(chaine, INSTR(chaine, '.',-1)+1) AS droite
    FROM t
     
    CHAINE	GAUCHE	DROITE
    qdhjdfgjk@machaine.jdfgdfhlkjmshlms	qdhjdfgjk	jdfgdfhlkjmshlms
    qdhjdfgjkfghkmlmlmf@machaine.jdfgdf	qdhjdfgjkfghkmlmlmf	jdfgdf

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    500
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 500
    Par défaut
    Est-ce qu'un truc de ce style ne marcherait pas ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SUBSTR(chaine, INSTR(chaine, '@') + 1, INSTR(chaine, '.') - INSTR(chaine, '@') - 1)
    Voici un test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SQL> SELECT SUBSTR('ABC@TEST.GEH', INSTR('ABC@TEST.GEH', '@') + 1, INSTR('ABC@TEST.GEH', '.') - INSTR('ABC@TEST.GEH', '@') - 1) FROM dual;
     
    SUBS
    ----
    TEST

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Citation Envoyé par m_gueye Voir le message
    je crois que tu ne m'a pas bien compris,

    SUBSTRING ne me sert à rien car je n'ai pas de parties fixes

    est-ce que mon script à l'air d'utiliser des longueurs fixes ?

    Edit : ha oui, il y a INSTR avec le sens... quel idiot je fais parfois

  8. #8
    Futur Membre du Club
    Inscrit en
    Mars 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 4
    Par défaut
    Merci Mcm,

    ça marche tu es un pro!!!!!!!!!!!!!!!!!!

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Je suis un incompris


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

Discussions similaires

  1. [RegEx] Retourner une array sur une partie de la chaine
    Par absurdsystem dans le forum Langage
    Réponses: 2
    Dernier message: 25/04/2010, 16h03
  2. Comment extraire les selections d'une combobox vers une feuille excel
    Par froggyaz dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 22/09/2008, 16h58
  3. Réponses: 1
    Dernier message: 04/04/2008, 12h14
  4. [C#] Comment extraire les parties d'une string ?
    Par mrpowerboy dans le forum C#
    Réponses: 3
    Dernier message: 21/02/2006, 09h10
  5. comparaison d une partie de la chaine de caractere
    Par sneb5757 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 26/12/2005, 15h50

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