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 :

Extraction de la position de chaine de caractère


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur
    Avatar de jsd03
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2008
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Août 2008
    Messages : 1 221
    Par défaut Extraction de la position de chaine de caractère
    Bonjour,

    voilà mon "soucis" :

    Je dois extraire toutes les positions des chaines de caractères ## dans une chaine issue d'une colonne.

    Exemple :
    Bienvenue sur le site internet ##titre##, la date du jour est ##date##


    donc j'aimerai en retour un tableau ou autre avec : 31, 37, 60, 66

    J'étais près à faire une fonction en PL/SQL mais je me demandais s'il n'existait pas une fonction qui ferait ça tout seul.
    Google est ton ami mais ton voisin aussi

    Modérateur BI - Responsable Talend
    Mes tutoriels - FAQ Talend - FAQ SQL*Plus

    Avant toute chose : lire le mode d'emploi du forum et ses règles.
    Suivez @Developpez sur twitter !

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    507
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 507
    Par défaut
    Regarde du côté de la fonction INSTR.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2008
    Messages : 75
    Par défaut
    j'ai essayé ca
    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 type tableau IS VARRAY(7) OF number;
    /
    create or replace function analyser_chaine ( p_chaine in varchar2) return  tableau
     is
     tab tableau :=tableau(0,0,0,0,0,0,0);
     v_length number;
     v_pos number;
     begin
     v_length:=trunc(length(p_chaine)/2);
     for i in 1..v_length
     loop
      select instr(p_chaine,'##',1,i) into v_pos
     from dual ;
    	if v_pos<>0 then
     		tab(i):= v_pos;
            else 
               exit;
    	end if;     
     end loop;
     return tab;
    end ;

  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
    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> create or replace function getPosChar(p_chaine in varchar2,
      2                                        p_sep in varchar2)
      3  return varchar2 is 
      4    v_pos number:=0;
      5    v_res varchar2(32000);
      6  begin
      7     loop
      8       v_pos := instr(p_chaine, p_sep, v_pos+1);
      9     exit when v_pos = 0;
     10        v_res := v_res || ',' || to_char(v_pos);
     11     end loop;
     12     return substr(v_res,2);
     13  end;
     14  /
    Fonction créée.
     
    SQL> select getPosChar('Bienvenue sur le site internet ##titre##, la date du jour est ##date##', '##') from dual;
     
    GETPOSCHAR('BIENVENUESURLESITEINTERNET##TITRE##,LADATEDUJOUREST##DATE##','##')
    --------------------------------------------------------------------------------
    32,39,63,69

  5. #5
    Expert confirmé 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
    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
     
    SQL> With data as (
      2  Select 'Bienvenue sur le site internet ##titre##, la date du jour est ##dat
    e##' col From Dual
      3  )
      4  Select collect(instr(col, '##', 1, level))
      5  from data
      6  connect by level <= (length(col) - length(replace(col,'##','')) ) /2
      7  /
     
    COLLECT(INSTR(COL,'##',1,LEVEL))
    --------------------------------------------------------------------------------
     
    SYSTPKXgW773VS4iLy1KEsuiqYA==(32, 39, 63, 69)

  6. #6
    Rédacteur
    Avatar de jsd03
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2008
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Août 2008
    Messages : 1 221
    Par défaut
    Alors là merci à tous

    J'ai plus qu'à faire mon choix lol.
    Google est ton ami mais ton voisin aussi

    Modérateur BI - Responsable Talend
    Mes tutoriels - FAQ Talend - FAQ SQL*Plus

    Avant toute chose : lire le mode d'emploi du forum et ses règles.
    Suivez @Developpez sur twitter !

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

Discussions similaires

  1. extraction des mots à partir dune chaine de caractères
    Par khaledklaud dans le forum Langage
    Réponses: 2
    Dernier message: 30/09/2008, 16h13
  2. Réponses: 10
    Dernier message: 20/02/2008, 11h57
  3. Extraction de chaine de caractères
    Par asterix76-rouen dans le forum Langage
    Réponses: 4
    Dernier message: 20/12/2006, 23h17
  4. Réponses: 5
    Dernier message: 02/01/2006, 22h16
  5. Extraction d'une chaine de caractères
    Par megane dans le forum Langage
    Réponses: 2
    Dernier message: 05/01/2004, 14h52

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