Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/12/2010, 08h18   #1
Invité de passage
 
tina
Inscription : février 2010
Messages : 19
Détails du profil
Informations personnelles :
Nom : tina

Informations forums :
Inscription : février 2010
Messages : 19
Points : 2
Points : 2
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 :
Direction Générale de l'Entreprise
la fonction doit retourner ..
en utilisant les fonctions et comment faire ,
merci beaucoup
tytous est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 22/12/2010, 10h10   #2
Membre Expert
 
Avatar de Garuda
 
Homme Philippe CHIRCOP
Chef de projet
Inscription : juin 2007
Messages : 1 109
Détails du profil
Informations personnelles :
Nom : Homme Philippe CHIRCOP
Localisation : France

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

Informations forums :
Inscription : juin 2007
Messages : 1 109
Points : 1 559
Points : 1 559
Un petit algo !!
Cherche un peu, creuse toi les meninges !
__________________
Garuda गरूड
Brahmâ la Guerre et Vishnu la Paix

Oracle 10.2.0.4 - Forms6i patch 17 - Toad 11.1 - sharePoint 2010
Garuda est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 15h23   #3
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 463
Points : 10 463
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Ce n'est pas si évident que ça, enfin sauf pour ceux qui manipulent souvent les expressions régulières :
Code :
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
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 22/12/2010, 16h33   #4
Membre du Club
 
AC
Inscription : octobre 2010
Messages : 28
Détails du profil
Informations personnelles :
Nom : AC
Âge : 43
Localisation : Suisse

Informations forums :
Inscription : octobre 2010
Messages : 28
Points : 48
Points : 48
Comme initialement demandé, il fallait écrire une fonction : voici une ébauche à optimiser mais qui peut mettre sur la voie...

Code :
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 :
SELECT getFirstLetters ('est-ce que ca marche ta ta ta') FROM dual;
wahnfried est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 22/12/2010, 16h53   #5
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 437
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 437
Points : 4 173
Points : 4 173
Pour la forme

Code :
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
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 23/12/2010, 10h58   #6
Invité de passage
 
tina
Inscription : février 2010
Messages : 19
Détails du profil
Informations personnelles :
Nom : tina

Informations forums :
Inscription : février 2010
Messages : 19
Points : 2
Points : 2
ok les gars, grand merci à vous ,
tytous est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h24.


 
 
 
 
Partenaires

Hébergement Web