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

Oracle Discussion :

Extraction d'une partie d'une colonne


Sujet :

Oracle

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 44
    Points : 32
    Points
    32
    Par défaut Extraction d'une partie d'une colonne
    Bonjour !

    J'ai une colonne qui contient une liste de fichier et leurs chemins complet d'accès, par exemple :

    M:/blah/blah1/blah2/fichier1.txt
    M:/Domaine1/theme2/fichier2.html
    M:/Domaine2/themex/fichier3.doc
    M:/Domaine4/theme4/fichier4.txt
    M:/Domaine1/theme4/theme7/fichier5.txt

    Je voudrai faire une requete qui me fasse un select distinct sur les extentions qui me renvoi leur liste.

    L'exemple ci dessus me renverrai donc :

    .txt
    .html
    .doc

    Est-ce possible??? Et si oui, comment...

    Merci

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Points : 3 798
    Points
    3 798
    Par défaut
    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
     
    SQL> SELECT * FROM dvp ; 
     
    A
    ---------------------------------------------
    M:/blah/blah1/blah2/fichier1.txt
    M:/Domaine1/theme2/fichier2.html
    M:/Domaine2/themex/fichier3.doc
    M:/Domaine4/theme4/fichier4.txt
    M:/Domaine1/theme4/theme7/fichier5.txt
     
    SQL> 
    SQL> SELECT SUBSTR(a,INSTR(a,'.',-1),LENGTH(a)) FROM dvp ; 
     
    SUBSTR(A,INSTR(A,'.',-1),LENGTH(A))
    ---------------------------------------------
    .txt
    .html
    .doc
    .txt
    .txt

  3. #3
    Membre averti
    Inscrit en
    Novembre 2002
    Messages
    549
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 549
    Points : 436
    Points
    436
    Par défaut
    Avant d'aller manger, chu vraiment un bon gars

    Dans ma petite biblio perso, 2 fonctions :

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    --//---------------------------------------------------------------------------------------------------------------------------
    FUNCTION TOKEN_COUNT(chaine_token IN VARCHAR2,separateur IN VARCHAR2)
    RETURN INTEGER
    IS
    token_count INTEGER:=0;
    BEGIN
    FOR scan IN 1..LENGTH(chaine_token)
    LOOP
    	IF SUBSTR(chaine_token,scan,1)=separateur THEN
    	token_count:=token_count+1;
    	END IF;
    END LOOP;
    RETURN token_count;
    END TOKEN_COUNT;
     
    --//-----------------------------------------------------------------------------------------------------------
    FUNCTION TOKEN_AT(chaine IN VARCHAR2,separateur IN VARCHAR2,token_at IN INTEGER)
    RETURN VARCHAR2
    IS
    position_depart INTEGER;
    position_fin INTEGER;
    token_compte INTEGER;
    longueur_extraire INTEGER;
    token_extrait VARCHAR2(250);
    BEGIN
     
    token_compte:=TOKEN_COUNT(chaine,separateur);
     
    IF token_at=1 THEN
    	position_depart:=1;
    	 ELSE
    	 position_depart:=INSTR(chaine,separateur,1,token_at-1)+1;
    END IF;
    IF token_at=token_compte+1 THEN
    	position_fin:=length(chaine)+1;
    	 ELSE
    	 position_fin:=INSTR(chaine,separateur,1,token_at);
    END IF;
    longueur_extraire:=position_fin-position_depart;
    IF longueur_extraire=0 THEN
    	longueur_extraire:=1;
    END IF;
     
    token_extrait:=SUBSTR(chaine,position_depart,longueur_extraire);
     
    RETURN token_extrait;
     
    END TOKEN_AT;
    Tu appelles ensuite comme cela le fonction TOKEN_AT :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      1* select BIBLIO.TOKEN_AT('M:/blah/blah1/blah2/fichier1.txt','.',2) from dual
    SQL> /
     
    BIBLIO.TOKEN_AT('M:/BLAH/BLAH1/BLAH2/FICHIER1.TXT','.',2)
    --------------------------------------------------------------------------------
    txt
    @
    PpPool

  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
    Points : 3 609
    Points
    3 609
    Par défaut
    Ou également :
    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
    SQL> select * from dvp ; 
    A 
    --------------------------------------------- 
    M:/blah/blah1/blah2/fichier1.txt 
    M:/Domaine1/theme2/fichier2.html 
    M:/Domaine2/themex/fichier3.doc 
    M:/Domaine4/theme4/fichier4.txt 
    M:/Domaine1/theme4/theme7/fichier5.txt 
     
     
    SQL> select substr (a, 1 - instr (a,  '.')) ext from dvp; 
    EXT
    ---------- 
    .txt 
    .html 
    .doc 
    .txt 
    .txt
    Un problème sans solution est un problème mal posé

    Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.

  5. #5
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Points : 3 798
    Points
    3 798
    Par défaut
    plaineR es tu sur ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SQL> SELECT SUBSTR (a, 1 - INSTR (a,  '.')) ext FROM dvp; 
     
    EXT
    ---------------------------------------------
    ah/blah1/blah2/fichier1.txt
    aine1/theme2/fichier2.html
    maine2/themex/fichier3.doc
    maine4/theme4/fichier4.txt
    maine1/theme4/theme7/fichier5.txt

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 44
    Points : 32
    Points
    32
    Par défaut
    Merci bcp à vous deux

  7. #7
    Membre averti

    Inscrit en
    Septembre 2003
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 425
    Points : 398
    Points
    398
    Par défaut
    Citation Envoyé par jaouad
    plaineR es tu sur ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SQL> SELECT SUBSTR (a, 1 - INSTR (a,  '.')) ext FROM dvp; 
     
    EXT
    ---------------------------------------------
    ah/blah1/blah2/fichier1.txt
    aine1/theme2/fichier2.html
    maine2/themex/fichier3.doc
    maine4/theme4/fichier4.txt
    maine1/theme4/theme7/fichier5.txt
    C'est en fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SUBSTR (a, 1 + INSTR (a,  '.'))

  8. #8
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Points : 3 798
    Points
    3 798
    Par défaut
    Citation Envoyé par sygale
    C'est en fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SUBSTR (a, 1 + INSTR (a,  '.'))
    c'est bel et bien ce qui me semblait

  9. #9
    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
    Points : 3 609
    Points
    3 609
    Par défaut


    Je me suis gouré de ligne dans mon copier-coller. Le "1-" est en effet en trop.

    La solution que je voulais proposer est donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select substr (a, instr (a,  '.')) ext from dvp;
    Un problème sans solution est un problème mal posé

    Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.

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

Discussions similaires

  1. donner une couleur a une partie d'une forme
    Par ralf91 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 04/04/2008, 17h02
  2. Réponses: 1
    Dernier message: 04/04/2008, 12h14
  3. Sélectionner seulement une partie d'une valeur d'une cellule
    Par ArthurO0O dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 20/08/2007, 11h05
  4. masquer une partie d'une vidéo par une banniere
    Par lezabour dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 16/10/2006, 16h47
  5. copier une partie d'une image vers une autre
    Par gregcat dans le forum Langage
    Réponses: 1
    Dernier message: 14/04/2006, 13h39

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