Bonjour,
je voulais faire une requête SQL sous Oracle qui me donne la chose suivante :
bonjour ===>/b/o/n/j/o/u/r/
est c'est possible sous Oracle?
Merci.
Bonjour,
je voulais faire une requête SQL sous Oracle qui me donne la chose suivante :
bonjour ===>/b/o/n/j/o/u/r/
est c'est possible sous Oracle?
Merci.
Salut !
A partir de 10g,
Edit : plus vite que super-modo, mais moins bien lu l'énoncé... pas vu le premier slash
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SQL> SELECT regexp_replace('bonjour', '(.)', '\1/') 2 FROM dual 3 / REGEXP_REPLACE -------------- b/o/n/j/o/u/r/
En 10g+ vous avez les expressions régulières :
Edit : grillé par la boule jaune !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 select regexp_replace('bonjour', '(.)', '/\1') || '/' as mot from dual; MOT --------------- /b/o/n/j/o/u/r/
Merci pour vos reponses rapides,
la mauvaise nouvelle c'est que je fonctionne sous Oracle 9.2i
je ne sais pas est ce qu'il existe une solution sous cette version d'Oracle?
Merci d'avance.
Crée une fonction qui prend en paramètre ta chaîne, itère dessus pour ajouter les /, puis retourne le résultat.
Sinon, si tu veux un truc dégueu et contre performant et en mode bug-using, tu as :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 WITH t AS ( select 'bonjour' msg from dual ) select (select replace(replace(xmlagg(xmlelement("x", '/' || substr(t.msg, level, 1))), '</x>', ''), '<x>', '') from dual connect by level <= length(t.msg)) || '/' from t
Merci pacmann , oui je vois ....je suis victime de la version 9i d'Oracle, je suis pour créer une fonction propre qui gère ça (comme vous l'avez recommendé).
pouvez-vous m'aider à créer cette fonction?
thank's in adavnce.
Quelque chose comme ça :
Ou avec la méthode de Pacmann (légèrement modifiée, au lieu de concaténer le slash j'ai utilisé le replace de la balise ouvrante) :
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 CREATE OR REPLACE FUNCTION f_slash_string (p$_input in varchar2) RETURN varchar2 DETERMINISTIC IS v$_string varchar2(100) default '/'; BEGIN FOR i IN 1..length(p$_input) LOOP v$_string := v$_string || substr(p$_input, i , 1) || '/'; END LOOP; RETURN (v$_string); END f_slash_string; / select f_slash_string('bonjour') as slash from dual; SLASH --------------- /b/o/n/j/o/u/r/
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 CREATE OR REPLACE FUNCTION f_slash_string (p$_input in varchar2) RETURN varchar2 DETERMINISTIC IS v$_string varchar2(100); BEGIN SELECT REPLACE(REPLACE(xmlagg(xmlelement("x", substr(p$_input, level, 1))), '</x>', ''), '<x>', '/') || '/' INTO v$_string FROM dual CONNECT BY level <= length(p$_input); RETURN (v$_string); END f_slash_string; /
Merci Waldar,
Votre fonction marche bien.
Mon problème est résolu.
Thank's.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager