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 :

Lire le contenu d'un champ mot par mot


Sujet :

SQL Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 92
    Points : 42
    Points
    42
    Par défaut Lire le contenu d'un champ mot par mot
    Bonjour,
    Dans un champ de type varchar2(4000) ( ou bien LONG je n'ai pas encore décidé), je souhaite lire le contenu mot par mot.


    Comment faire ?
    Si le SQL ou le PLSQL ne le permet pas, comment pourrais-je procéder toujous à l'intérieur d'Oracle ?


    Merci beaucoup d'avance

  2. #2
    Expert éminent sénior
    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
    Points : 11 862
    Points
    11 862
    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
    22
    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;
    /
    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
    SQL> set serveroutput on
    SQL> DECLARE
      2    phrase VARCHAR2(1000):= 'un deux trois' ;
      3    mot VARCHAR2(1000);
      4    i   PLS_INTEGER := 1 ;
      5  BEGIN
      6    LOOP
      7      mot := SPLIT( phrase, i, ' ' );
      8   EXIT WHEN mot IS NULL;
      9   DBMS_OUTPUT.PUT_LINE(mot);
     10   i := i + 1 ; 
     11    END LOOP;
     12  END;
     13     
     14  /
    un
    deux
    trois
     
    Procédure PL/SQL terminée avec succès.
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  3. #3
    McM
    McM est déconnecté
    Expert éminent

    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
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    En SQL
    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 'Un, Trois, Cinq, Six' c FROM dual 
       )
      SELECT extractvalue(COLUMN_VALUE,'/x')
      FROM t,
     TABLE(xmlsequence(EXTRACT(XMLTYPE('<list><x>'||REPLACE(c,', ','</x><x>')||'</x></list>'),
          '/list/x')))
     
    EXTRACTVALUE(COLUMN_VALUE,'/X')
    Un
    Trois
    Cinq
    Six
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  4. #4
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    En Sql sans Xml
    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
     
    With data As
    (Select 'Un, Trois, Cinq, Six' as txt from dual
    ),
    parse as
    (  select trim( substr (txt,instr (txt, ',', 1, level  ) + 1,
                    instr (txt, ',', 1, level+1)
                    - instr (txt, ',', 1, level) -1 ) )
                    as token    
        from (select ','||(Select txt from Data)||',' txt
                from dual)
              connect by level <= length((Select txt from Data))-length(replace((Select txt from Data),',',''))+1
    )
    select * from parse;
    TOKEN
    ----------------------
    Un
    Trois
    Cinq
    Six

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 92
    Points : 42
    Points
    42
    Par défaut
    Merci beaucoup.

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

Discussions similaires

  1. Lire un fichier texte mot par mot
    Par xspray dans le forum Débuter
    Réponses: 4
    Dernier message: 01/06/2009, 17h34
  2. lire un texte mot par mot
    Par jane40 dans le forum Débuter
    Réponses: 12
    Dernier message: 16/01/2009, 13h51
  3. Lire le contenu d'un fichier mot par mot
    Par mlaiti dans le forum Débuter
    Réponses: 6
    Dernier message: 19/03/2008, 11h15
  4. Réponses: 5
    Dernier message: 21/08/2007, 18h02
  5. Réponses: 2
    Dernier message: 29/05/2006, 17h04

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