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 09/05/2011, 11h27   #1
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
Par défaut Formatage avec expressions régulières

Bonjour à tous !

Y'a-t-il un moyen de formater une chaîne de caractères en appliquant un "masque" ?

exemple :

masque : 'XX X XX XXXXX'

chaîne à formater : '99999789'

Résultat attendu : '00 9 99 99789'

Je peux bien sûr le faire de manière traditionnelle, mais je pense qu'une utilisation des expresssions régulières est possible. Qu'en pensez-vous ? Peut-on me mettre sur la voie ?

Un grand merci à tous.
wahnfried est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2011, 12h06   #2
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 311
Points : 5 808
Points : 5 808
Citation:
Envoyé par wahnfried Voir le message
...Je peux bien sûr le faire de manière traditionnelle...
C'est la meilleure solution.
"Using Back References to Reposition Characters"
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2011, 16h33   #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 438
Points : 10 438
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Les expressions régulières étant assez coûteuses en ressources, le mieux reste d'utiliser ce bon vieux to_char :
Code :
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
WITH Numbers AS
(
 SELECT trunc(dbms_random.value(power(10, level-1), power(10, level))) AS col
   FROM dual
connect BY level <= 10
)
SELECT col
     , regexp_replace(to_char(col, 'fm0000000000'),
                      '([[:digit:]]{2})([[:digit:]]{1})([[:digit:]]{2})([[:digit:]]{5})',
                      '\1 \2 \3 \4')                                    AS col_r
     , to_char(col, 'fm00G0G00G00000', 'nls_numeric_characters='', ''') AS col_c
  FROM Numbers;
 
       COL COL_R          COL_C         
---------- -------------- --------------
         2 00 0 00 00002  00 0 00 00002 
        62 00 0 00 00062  00 0 00 00062 
       319 00 0 00 00319  00 0 00 00319 
      5804 00 0 00 05804  00 0 00 05804 
     87722 00 0 00 87722  00 0 00 87722 
    383382 00 0 03 83382  00 0 03 83382 
   2752830 00 0 27 52830  00 0 27 52830 
  67419795 00 6 74 19795  00 6 74 19795 
 692348101 06 9 23 48101  06 9 23 48101 
4802078112 48 0 20 78112  48 0 20 78112
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2011, 17h58   #4
Membre du Club
 
Inscription : novembre 2008
Messages : 46
Détails du profil
Informations personnelles :
Localisation : Royaume-Uni

Informations forums :
Inscription : novembre 2008
Messages : 46
Points : 51
Points : 51
Merci pour le lien mnitu.

Par ailleurs je lis cette meme reflexion dans la plupart des threads qui parlent d'expressions regulieres
Citation:
Les expressions régulières étant assez coûteuses en ressources, le mieux reste d'utiliser ce bon vieux to_char
Alors quand doit-on utiliser les expressions regulieres ??
Jorafali est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2011, 18h32   #5
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 438
Points : 10 438
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Quand on n'a pas le choix me paraît être un bon candidat !
Ici le besoin était finalement assez simple pour être résolu avec to_char, mais ce n'est pas toujours le cas bien entendu.
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2011, 11h07   #6
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
Par défaut Merci à tous

J'ai retenu la version TO_CHAR qui fonctionne parfaitement.

Je m'endormirai ce soir un peu moins bête grâce à vous.

wahnfried 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 13h02.


 
 
 
 
Partenaires

Hébergement Web