substr et opération sur les chaînes

L'instruction substr d'oracle permet d'extraire une sous-chaîne de caractères à partir d'une chaîne, selon la position des caractères. -- supprimer les n-premiers caractères (n=12)
select substr('1er exemple de substr', 13) from dual;
=> 'de substr'


-- prendre les k caractères après n (n=4, ; k=7)
select substr('2nd exemple de substr', 5, 7) from dual;
=> 'exemple'


-- prendre les n-derniers caractères (n=17)
select substr('3eme exemple de substr', -17) from dual;
=> 'exemple de substr'


associé aux fonction instr et length, il est possible d'effectuer de nombreuses opérations sur les chaînes.

L'instruction instr permet d'identifier la position d'une sous-chaîne de caractère contenu dans une chaîne : -- touver la position de "exemple"
select instr('voici un exemple de instr', 'exemple') from dual;
=> 10


-- supprimer la partie avant "exemple"
select substr('voici un exemple de instr associé à substr', instr('voici un exemple de instr associé à substr', 'exemple')) from dual;
=> 'exemple de instr associé à substr'
ou bien (en utilisant la fonction with : with ma_chain as (select 'voici un exemple de instr associé à substr' s from dual)
select substr(s,instr(s, 'exemple')) from ma_chain;
=> 'exemple de instr associé à substr'



-- supprimer la partie après "exemple"
with ma_chain as (select 'voici un autre exemple de instr associé à substr' s , 'exemple' t from dual)
select substr(s,1,instr(s,t)+length(t) ) from ma_chain;
=> 'voici un autre exemple'

Particularités :
substr(colA, 0, n) <==> substr(colA, 1, n)
substr(colA, 0) <==> substr(colA, 1) <==> colA
substr(colA,n, k) avec k >= length(colA)-n <==> substr(colA,n)


Voir également l'utilisation de la fonction decode.




Vous n'avez pas trouver réponse à votre question ? Préciser votre recherche :

Catégories