Bonjour tout le monde !
Je cherche quelque chose de super simple : Retourner les N premiers mots d'un champ de texte.
Dans ce cas, le séparateur serait ESPACE.
Y'a pas une fonction pour ça ?
Merci pour les réponses !
Bonjour tout le monde !
Je cherche quelque chose de super simple : Retourner les N premiers mots d'un champ de texte.
Dans ce cas, le séparateur serait ESPACE.
Y'a pas une fonction pour ça ?
Merci pour les réponses !
Tu peux faire par exemple :Envoyé par keskispas
select rpad('ABCDEFGKLM HTYU IO', instr('ABCDEFGKLM HTYU IO', ' ')) from dual
INSTR() qui te donne la position de ton séparateur
RPAD() qui te donne les X caractères à droite
J'espère que cela va t'aider.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 with t as (select 'Ma plus belle requete en sql' t, 3 n from dual) select t,n,substr(t,1,instr(t,' ',1,n)) s from t; T N S ---------------------------- ---------- ---------------------------- Ma plus belle requete en sql 3 Ma plus belle
pour les anciennes bases, il est possible de créer une fonction du style :
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
23
24
25 CREATE OR REPLACE function left_substr ( strTemp varchar2,delim varchar2, cpt number ) return varchar2 is pos number(3):=1; cptCurr number(2) := 0; oldpos number(3) := 1; begin while instr (strTemp,delim,oldpos )>0 loop pos := instr (strTemp,delim,oldpos) ; if pos > 0 then cptCurr := cptCurr +1; oldpos := pos +1 ; if cptCurr = cpt then oldpos := pos -1; exit ; end if; else oldpos := pos +1; end if; end loop; if pos > 0 then return substr(strTemp,0,oldpos); else return strTemp ; end if; end; /CDLT.1* select left_substr('Salut toto comment vas tu ?',' ',4) result from dual
SQL> /
RESULT
-------------------------------------------------------------------------------
Salut toto comment vas
substr(t,1,instr(t,' ',1,n)) fonctionne sans aucun doute dans Oracle 4, tu veux dire quoi par ancienne base?
WITH t AS ne fonctionne pas en 8.05 entre autres ,
le monde n'est pas composé que de 10gR2 ....
Partager