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 :

[REGEXP]regexp_replace avec 2 expressions et 2 valeurs


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Juillet 2011
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juillet 2011
    Messages : 2
    Par défaut [REGEXP]regexp_replace avec 2 expressions et 2 valeurs
    Bonjour,

    J'ai quelques difficultés avec les expressions régulières.

    Sur la même requête SELECT, je dois identifier des nombres et les remplacer par 2 valeurs en fonction d'une expression régulière.

    La première expression régulière est
    peut commencer par 2 ou 3 lettres majuscules, doit être suivi de plus de 7 chiffres, peut finir par 2 ou 3 lettres majuscules
    Il faut qu'il y ai au moins 2 lettres soit au début soit a la fin
    exemple :
    AA0123456789AA
    AA0123456789
    0123456789AA
    a remplacer par [Numéro1]

    Et la seconde
    si la première n'est pas trouvé,
    doit faire plus de 7 chiffres
    0123456789
    a remplacer par [Numéro2]


    Pour le moment mon expression régulière ressemble a
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT champ1, regexp_replace(champ2, '[A-Z]{0,3}[0-9]{7,}[A-Z]{0,3}', '[Numéro1]'), champ3
    FROM table1

    Je ne sais pas comment faire pour remplacer l'expression 2 par '[Numéro2]', si l'expression 1 n'est pas rencontré.

    Mon expression régulière que j'ai déjà écrite, ne fonctionne pas comme je le souhaiterais.

    Pouvez vous m'aider ?
    Je reste a disposition pour des questions supplémentaires
    Cordialement,
    Valgrin

  2. #2
    Membre Expert
    Femme Profil pro
    Data engineer
    Inscrit en
    Juin 2007
    Messages
    673
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Data engineer
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 673
    Par défaut
    Bonjour,
    Avec un CASE et un REGEXP_LIKE on peut arriver à quelquechose. Voici ma proposition s'il faut remplacer tout le contenu du champ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT champ1
         , (CASE WHEN regexp_like(champ2, '[A-Z]{2,3}[0-9]{7,}') THEN '[Numéro1]'
                 WHEN regexp_like(champ2, '[0-9]{7,}[A-Z]{2,3}') THEN '[Numéro1]'  
                 WHEN regexp_like(champ2, '[0-9]{7,}') THEN '[Numéro2]'  
                 ELSE champ2 END) 
         , champ3
    FROM table1
    La cascade de WHEN fonctionne comme des SI...SINON SI...SINON SI et permet de tester différents patterns.
    Est-ce que le résultat est plus proche de ce que tu dois obtenir ?

  3. #3
    Candidat au Club
    Inscrit en
    Juillet 2011
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juillet 2011
    Messages : 2
    Par défaut
    Résolu grâce au chat

    mon expression était

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '[A-Z]{2,}[0-9]{7,}[A-Z]{2,}|[A-Z]{2,}[0-9]{7,}|[0-9]{7,}[A-Z]{2,}'

    Merci a vous !


    Mon expression finale ressemble plus a

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT regexp_replace(regexp_replace(champ1, '[A-Z]{2,}[0-9]{7,}[A-Z]{2,}|[A-Z]{2,}[0-9]{7,}|[0-9]{7,}[A-Z]{2,}', '[numero1]'), '[0-9]{7,}', '[Numero2]') from table1

    Mais merci de ta réponse, elle me parait efficace pour remplacer tout le contenu d'un champ mais ce n'est pas ce que je cherche a faire !

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 04/05/2012, 17h23
  2. DEADLOCK + RAFRAISHISSEMENT avec Inerbase Express + Int.6
    Par AODRENN dans le forum Bases de données
    Réponses: 1
    Dernier message: 22/09/2005, 16h53
  3. Probleme avec l'expression d'un QRExpr
    Par smail21 dans le forum Bases de données
    Réponses: 3
    Dernier message: 31/07/2005, 09h19
  4. select avec un nombre limité de valeurs retournées
    Par felix79 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 23/12/2004, 15h16
  5. Requête avec l'expression Like
    Par Mvu dans le forum ASP
    Réponses: 3
    Dernier message: 02/09/2003, 09h39

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