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 :

prendre les premiers caractères d'une chaine


Sujet :

PL/SQL Oracle

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2010
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 27
    Points : 13
    Points
    13
    Par défaut prendre les premiers caractères d'une chaine
    bonjour à tous,

    je suis sous oracle 10 g, et je veux récupérer toutes les caractères de debut d'une chaine, comme par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Direction Générale de l'Entreprise
    la fonction doit retourner ..
    en utilisant les fonctions et comment faire ,
    merci beaucoup

  2. #2
    Membre chevronné Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Points : 2 071
    Points
    2 071
    Par défaut
    Un petit algo !!
    Cherche un peu, creuse toi les meninges !

  3. #3
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 394
    Points
    18 394
    Par défaut
    Ce n'est pas si évident que ça, enfin sauf pour ceux qui manipulent souvent les expressions régulières :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    with MaTable as
    (
    select 'Direction Générale de l''Entreprise' as str from dual
    )
    select str, regexp_replace(str, '(^| )([^ ])([^ ])*', '\2') as res
      from MaTable;
     
    STR                                  RES  
    ------------------------------------ -----
    Direction Générale de l'Entreprise   DGdl

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2010
    Messages : 31
    Points : 57
    Points
    57
    Par défaut
    Comme initialement demandé, il fallait écrire une fonction : voici une ébauche à optimiser mais qui peut mettre sur la voie...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    create or replace function getFirstLetters (piString varchar2) return varchar2
    is
    l_start number := 1;
    l_res varchar2(4000):=null;
    begin
      l_start := instr(pistring,' ', l_start);
      if l_start = 0 then return substr(piString,1,1); end if;
      l_res := substr(piString,1,1);
      while l_start > 0 loop
        l_res := l_res || substr(piString,l_start + 1,1);
        l_start :=  instr(piString,' ', l_start + 1);
      end loop;
      return l_res;
    end;
    et pour utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select getFirstLetters ('est-ce que ca marche ta ta ta') from dual;

  5. #5
    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
    Pour la forme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT ROWNUM num, EXTRACTVALUE(COLUMN_VALUE,'/x') AS mot, SUBSTR(EXTRACTVALUE(COLUMN_VALUE,'/x') ,1,1) AS first_letter
    FROM (TABLE(XMLSEQUENCE(EXTRACT(XMLTYPE('<list><x>'||
    REPLACE('Direction Générale de l''Entreprise',' ','</x><x>')||'</x></list>'),'/list/x'))))
     
    NUM	MOT		FIRST_LETTER
    1	Direction	D
    2	Générale	G
    3	de		d
    4	l'Entreprise	l

  6. #6
    Membre à l'essai
    Inscrit en
    Février 2010
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 27
    Points : 13
    Points
    13
    Par défaut
    ok les gars, grand merci à vous ,

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

Discussions similaires

  1. [RegEx] Regex sur les 3 premiers caractères d'une chaine
    Par boo64 dans le forum Langage
    Réponses: 6
    Dernier message: 01/02/2011, 10h10
  2. Supprimer les premiers caractères d'une chaine
    Par Balbuzard dans le forum Débuter
    Réponses: 16
    Dernier message: 16/12/2010, 11h42
  3. Récupérer les n premiers caractères d'une chaine.
    Par derfatypik dans le forum Langage
    Réponses: 2
    Dernier message: 12/06/2008, 12h45
  4. Réponses: 2
    Dernier message: 04/10/2007, 12h31
  5. Réponses: 2
    Dernier message: 19/06/2007, 17h37

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