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

Oracle Discussion :

[Expression régulière] Début de chaine


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    533
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 533
    Par défaut [Expression régulière] Début de chaine
    Bonjour,

    je ne suis pas très à l'aise avec les REGEX, et j'aimerais avoir confirmation de ceci :

    Je souhaite récupérer dans ma requête SQL toutes les valeurs de mon champ 'nom' commençant par A, F et E.

    Voici mon expression régulière :
    Cela semble marcher mais je ne suis pas sûre que ce soit la bonne manière. Pourriez-vous confirmer ou infirmer cette partie de requête ?

    Merci d'avance.

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Par défaut
    En version 10.1.0.3.0 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    10g CYRIL> select *
      2  from dvp
      3  where x ~ '^[AF]';
    where x ~ '^[AF]'
            *
    ERROR à la ligne 3 :
    ORA-00911: caractère non valide
    Cependant, votre pattern me semble correct si vous l'utilisez de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ...
    WHERE REGEXP_LIKE(NOM, '^[AFE]');

  3. #3
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    533
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 533
    Par défaut
    Merci pour votre réponse.

    Nous avons la version Oracle 8i. Et l'utilisation de la fonction REGEXP_LIKE génère une erreur.
    Pensez-vous que la version 8i prend la syntaxe que j'ai postée dans mon premier message ?

  4. #4
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    en 8i on ne peut pas utiliser les expressions régulières

    Il faudra se satisfaire du LIKE et OR

  5. #5
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    533
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 533
    Par défaut
    Ah bon ? Pourquoi j'obtiens un résultat qui semble correct alors ?

  6. #6
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    T'es sûr ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SQL>  select * from
      2   (select 'ABC' nom from dual
      3   UNION
      4   select 'FGH' from dual
      5   UNION
      6   select 'XYZ' from dual)
      7   where nom ~ '^[AFE]';
     where nom ~ '^[AFE]'
               *
    ERREUR à la ligne 7 :
    ORA-00911: invalid character

  7. #7
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Par défaut
    Citation Envoyé par navis84
    Ah bon ? Pourquoi j'obtiens un résultat qui semble correct alors ?
    C'est le 1er test que j'ai effectué quand j'ai vu votre code --> cf la 1ère requête de mon premier post

    D'ailleurs cette syntaxe n'est pas non plus correcte en 10g

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

Discussions similaires

  1. [RegExp] comparaison début d'une chaine par expressions réguliéres.
    Par madina dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/11/2011, 12h43
  2. Réponses: 7
    Dernier message: 20/08/2011, 12h57
  3. [Expression régulière] capture de chaine
    Par Super_carotte dans le forum Langage
    Réponses: 8
    Dernier message: 16/11/2010, 08h47
  4. Expressions régulières - Longueur de chaines.
    Par caddy dans le forum Général Java
    Réponses: 3
    Dernier message: 28/12/2009, 15h31
  5. Réponses: 7
    Dernier message: 27/10/2005, 19h23

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