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 :

Expression régulière (REGEXP) en SQL


Sujet :

Langage SQL

  1. #1
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 145
    Par défaut Expression régulière (REGEXP) en SQL
    bonjour,
    après avoir fais le tour des docs sur le sujet, je ne trouve pas la solution à mon problème.

    j'ai une table avec trois colonnes de prix : prix, prix_min et prix_max.

    dans la colonne prix, j'ai des données du type chaine de caractères formatées (pas toujours, mais 95% des cas) selon le modèle : 'de 55 EUR à 195 EUR'

    comme vous vous en doutez, je voudrai récupérer les deux prix (la valeur numérique uniquement) et les insérer dans les colonnes prix_min et prix_max.

    j'espère que vous pourrez m'aider.

    merci d'avance, et n'hésitez pas à me poser des questions pour avoir plus de précisions.
    merci

  2. #2
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Par défaut
    Bonjour,

    Quel SGBD utilisez vous ?

    (C'est pas un peu idiot comme conception !?)

    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



  3. #3
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut
    REGEXP retourne une valeur booléenne indiquant s'il trouve l'expression régulière dans la chaîne qu'on lui propose. Ce n'est donc pas avec ça que tu pourras récupérer ton prix.

    Si les nombres figurant dans les chaînes de caractères de ta colonne prix ne sont vraiment que les prix mini et maxi dans cet ordre et si ta table a un identifiant, ce n'est pas trop dur à faire en php.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  4. #4
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 145
    Par défaut
    mysql.

    il faut dire que même en passant par php, je ne m'y retrouve pas.
    en fait, je ne vois pas comment aborder le pb, ni par quoi commencer.
    merci

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 997
    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 997
    Billets dans le blog
    6
    Par défaut
    Commencez par refaire votre modèle qui viole à l'évidence les règles de l'art et notamment la forme normale n°1 :
    Une relation est en première forme normale si et seulement si :
    - tout attribut contient une valeur atomique.

    http://sqlpro.developpez.com/cours/standards/

    Par exemple en créant deux colonnes : Prix_min, Prix_max et en inversant votre problème par une vue qui fera la chose suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT ..., 
    CASE 
       WHEN Prix_Max IS NOT NULL and Prix_Max IS NOT NULL 
          THEN 'De ' + CAST(Prix_Min AS VARCHAR(32)) + '€ à ' +CAST(Prix_Max AS VARCHAR(32)) +'€'   
       WHEN Prix_Max IS NOT NULL THEN CAST(Prix_Max AS VARCHAR(32)) +'€'
       WHEN Prix_Min IS NOT NULL THEN CAST(Prix_Min AS VARCHAR(32)) +'€'
       ELSE 'Prix inconnu'
    END
    FROM ...
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  6. #6
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut
    Un petit algo...

    Extraire l'identifiant et le prix à l'aide d'une requête
    Pour chaque ligne du résultat
    _prixmini = ''
    _Explode prix en ses différents mots
    _Pour chaque mot
    __Si mot/mot = 1
    ___Si prixmini = '' alors prixmini = mot
    ___Sinon prixmaxi = mot
    __Fin si mot
    _Fin pour
    _Faire requête mise à jour avec le prix mini et le prix maxi pour l'id de la ligne
    Ligne suivante

    Edit : Euh... Fred, ce qu'il veut, c'est justement passer de la colonne pourrie prix aux deux colonnes normalisées prixmini et prixmaxi !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  7. #7
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 145
    Par défaut
    effectivement ta solution fonctionne Philippe, merci.
    pour ce qui est de revoir le modèle, je suis tout à fait d'accord pour dire qu'il n'est pas bon, mais ça c'est justement le problème pas la solution
    je vais toutefois étudier la doc que tu m'as donnée, ça m'éclairera pour les prochaines fois.
    merci beaucoup à vous

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

Discussions similaires

  1. [RegEx] Expression régulière sur fichier SQL
    Par dermenji dans le forum Langage
    Réponses: 2
    Dernier message: 24/06/2009, 19h17
  2. Expressions régulières (regexp, regexprep)
    Par nofasc95 dans le forum MATLAB
    Réponses: 4
    Dernier message: 02/04/2009, 11h51
  3. expression régulière regexp
    Par Naktan dans le forum C
    Réponses: 2
    Dernier message: 16/08/2007, 19h16
  4. [regexp] pbl expression réguliére et menu déroulant
    Par UNi[FR] dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/06/2005, 09h37
  5. [RegExp]expression régulière
    Par illegalsene dans le forum Langage
    Réponses: 2
    Dernier message: 16/04/2005, 15h33

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