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 :

Expressions régulières ?


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de elitost
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2003
    Messages
    1 985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 985
    Par défaut Expressions régulières ?
    Bonjour,

    Je récupère des lignes dans un fichier , les colonnes sont séparées par des tabulations comme suis :

    ENT01 A fichier.txt 1230 20041216 3:05:34 0
    Je voudrais accéder à une colonne particulière ( la 4 ème par exemple ), comment faire pour récupére la valeur 1230 ?

    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    la fonction INSTR() permet de rechercher l'occurrence d'une caractère dans une chaine en (éventuellement) ignorant les n premières occurences trouvées

    exemple :

    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
     
    SQL> set serveroutput on
    SQL> 
    SQL> declare
      2    ch varchar2(60) := 'un deux trois quatre' ;
      3    i pls_integer ;
      4  begin  
      5    i := instr( ch,' ',1, 3 ) ;
      6    if i > 0 then
      7      dbms_output.put_line( substr( ch, i, 60 ) );
      8    end if ;
      9  end;
     10  /
    quatre
     
    Procédure PL/SQL terminée avec succès.
    dans cet exemple, je recherche la troisième occurence du caractère espace et j'affiche le reste de la chaine à partir de là

  3. #3
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Voici une fonction qui fait le boulot

    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
     
    CREATE OR REPLACE FUNCTION split ( PC$Chaine IN VARCHAR2, PN$Pos IN PLS_INTEGER, PC$Sep IN VARCHAR2 DEFAULT ',' )
    RETURN VARCHAR2
    IS
     LC$Chaine VARCHAR2(32767) := PC$Sep || PC$Chaine ;
     LI$I  PLS_INTEGER ;
     LI$I2 PLS_INTEGER ;
    BEGIN
     LI$I := INSTR( LC$Chaine, PC$Sep, 1, PN$Pos ) ;
     If LI$I > 0 Then
        LI$I2 := INSTR( LC$Chaine, PC$Sep, 1, PN$Pos + 1) ;
    	IF LI$I2 = 0 Then LI$I2 := LENGTH( LC$Chaine ) + 1 ; END IF ;
    	RETURN( SUBSTR( LC$Chaine, LI$I+1, LI$I2 - LI$I-1 ) ) ;
     ELSE
        RETURN NULL ;
     END IF ;
    END;
    il suffit de lui passer la chaîne de caractère, la position recherchée et le caractère de séparation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SQL> select split('un deux trois quatre', 3, ' ') from dual ;
     
    SPLIT('UNDEUXTROISQUATRE',3,'')
    -------------------------------------------------------------
    trois
     
    SQL>

  4. #4
    Membre Expert
    Avatar de elitost
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2003
    Messages
    1 985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 985
    Par défaut
    Génial, merci beaucoup

  5. #5
    Membre Expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Par défaut
    Si votre fichier n'est pas encore en base, vous pouvez lors de l'intégration (via SQL*Loader ou tables externes) spécifier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FIELDS TERMINATED BY "	"
    (attention les blancs, sont en fait le caractère <TAB>)
    de façon à pouvoir intégrer les champs dans des colonnes séparées.

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

Discussions similaires

  1. [RegEx] Expression régulières : Balises <SCRIPT>
    Par Gwipi dans le forum Langage
    Réponses: 2
    Dernier message: 24/04/2006, 23h25
  2. Expression réguliére
    Par Mad_Max dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 16/09/2003, 18h17
  3. [expression régulière] mon cerveau fait des noeuds..
    Par nawac dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 27/05/2003, 10h06
  4. Expressions réguliéres
    Par Tooms dans le forum Langage
    Réponses: 4
    Dernier message: 06/12/2002, 18h42
  5. Réponses: 5
    Dernier message: 11/06/2002, 15h21

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