IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

Expression régulière regexp_substr


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2004
    Messages : 132
    Par défaut Expression régulière regexp_substr
    Bonjour,

    Je souhaite utiliser regexp_substr pour extraire un montant d'une chaine de caractères qui sera toujours sous le format : "Montant SPECIAL".
    Nous pourrons avoir par Exemple : "Cap repay EUR 0.4 + 0.55 SPECIAL", mais seul le montant 0.55 lié à SPECIAL doit être extrait. Le reste est ignoré.
    J'ai tenté le code suivant mais il ramène aussi SPECIAL alors que je ne veux que le montant (0.55) de ce SPECIAL:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT regexp_substr(chaine, '[[:digit:]]{1}.[[:digit:]]* SPECIAL')AS Montant
        from
       (select 'Cap repay EUR 0.4 + 0.55 SPECIAL' chaine from dual);

    Quelqu'un aurait-il une solution à me proposer ?

    Merci!

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Il suffit de rajouter un replace !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT replace(regexp_substr(chaine, '[[:digit:]]{1}.[[:digit:]]* SPECIAL'), ' SPECIAL', '') AS Montant
      FROM (SELECT 'Cap repay EUR 0.4 + 0.55 SPECIAL' chaine FROM dual);
     
    MONTANT
    -------
      0.55

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2004
    Messages : 132
    Par défaut Expression régulière regexp_substr
    Ca marche !

    Merci beaucoup Waldar pour ton aide!

  4. #4
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    regexp_replace(chaine, '.* (\d\.\d*) SPECIAL.*','\1')
    il faut savoir les montant possible, 0.00001 à 0.99999 ? ou bien aussi 1000 et 25.12 ?

    peut-être donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    regexp_replace(chaine, '.* ([0-9.]+) SPECIAL.*','\1')

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 06/09/2010, 21h27
  2. Réponses: 6
    Dernier message: 18/05/2010, 17h46
  3. [expression régulière] mon cerveau fait des noeuds..
    Par nawac dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 27/05/2003, 10h06
  4. Expressions réguliéres
    Par Tooms dans le forum Langage
    Réponses: 4
    Dernier message: 06/12/2002, 18h42
  5. Réponses: 5
    Dernier message: 11/06/2002, 15h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo