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

Langage SQL Discussion :

select et REGEX


Sujet :

Langage SQL

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38

    Informations forums :
    Inscription : Avril 2005
    Messages : 277
    Points : 143
    Points
    143
    Par défaut select et REGEX
    Bonjour,

    Voila je suis en SQL et j'ai besoin de faire quelque chose d'assez spécial.

    je veux faire un search and replace (SED) sur un champ retourné par une requete SQL.

    J'ai une liste de versions stockées dans une table, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    2.0.0.14+2nobinonly-0ubuntu0.7.10
    1:2.0.0.12 (pt-PT)
    2.0.0.12 (fr)
    2.0.0.13+1nobinonly-0ubuntu0.7.10
    2.0.0.12 (es-ES)
    2.0.0.9 (fr)
    Et j'ai un PATTERN en regexp : ([0-9][.]){3}[0-9]
    pour retourner QUE le numéro de version propre.

    Je voudrait avoir un SELECT qui formatte l'affichage du champ. Et donc qui ne récupète QUE ce qui correspond avec le pattern (qui renvoie NULL si pas de correspondance par exemple)

    Je souhaiterais que le SELECT ne me retourne que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    2.0.0.14
    2.0.0.12
    2.0.0.12
    2.0.0.13
    2.0.0.12
    2.0.0.9
    Est-ce possible ? Mon PATTERN est connu d'avance.

    Merci à vous.

  2. #2
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Salut !

    Ca dépend de ton SGBD : les regexp sont implémentées sous Oracle.
    Cherche la syntaxe des regexp et de la fonction REGEXP_REPLACE. (ce n'est pas exactement comme sed).
    Par exemple, [0-9] doit être [:digit], ou un truc du genre...

    Remarque : tes numéros peuvent être à plusieurs chiffres. Prends garde à utiliser des trucs du genre ([0-9]){1,}

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38

    Informations forums :
    Inscription : Avril 2005
    Messages : 277
    Points : 143
    Points
    143
    Par défaut
    Mon SGBD est MySql ...

    J'utilise deja le REGEXP pour faire ma selection derriere le WHERE ...

    Mais cette fois ci je souhaite juste formatter le resultat de ma requete ... Et extraire UNIQUEMENT ce qui correspond au pattern !

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 902
    Points : 51 646
    Points
    51 646
    Billets dans le blog
    6
    Par défaut
    Regex n'existe pas dans la langage SQL, car SQL n'est pas un système de fichier. En revanche il existe le prédicat SIMILAR basé sur les expressions régulières.

    A +

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38

    Informations forums :
    Inscription : Avril 2005
    Messages : 277
    Points : 143
    Points
    143
    Par défaut
    Oui mais le SIMILAR ne permet de se trouver QUE après le FROM non ???

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 902
    Points : 51 646
    Points
    51 646
    Billets dans le blog
    6
    Par défaut
    Une fonction SQL peut figurer n'importe ou....

    A +

  7. #7
    Membre habitué
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38

    Informations forums :
    Inscription : Avril 2005
    Messages : 277
    Points : 143
    Points
    143
    Par défaut
    Oui lol ...

    ce que je voulais dire c'est que SIMILAR va me rapporter un matching et non un SUBSTRING ...

    Moi je souhaiterais découper QUE ce qui correspond au pattern ! Et non pas savoir les lignes qui correspondent !

Discussions similaires

  1. Select avec Regex (extraction chaine)
    Par tornade69 dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 16/03/2012, 16h46
  2. Select + Update + Regex
    Par GouKen dans le forum Langage SQL
    Réponses: 3
    Dernier message: 19/06/2008, 07h45
  3. Appliquer regex avec parenthèse capturantes sur SELECT
    Par vallica dans le forum Requêtes
    Réponses: 3
    Dernier message: 01/02/2008, 12h34
  4. [RegEx] Selection alphanumérique regex
    Par evil_Monkey dans le forum Langage
    Réponses: 7
    Dernier message: 18/01/2008, 16h14
  5. [C#] Datatable.Select( regex )
    Par mikyfpc dans le forum Windows Forms
    Réponses: 0
    Dernier message: 29/08/2007, 12h22

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