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

Requêtes MySQL Discussion :

Afficher un WHERE exemple LIKE '%{entre-A-et-Z}%'


Sujet :

Requêtes MySQL

  1. #1
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 293
    Points : 77
    Points
    77
    Par défaut Afficher un WHERE exemple LIKE '%{entre-A-et-Z}%'
    Bonjour,

    Avec SQL comment il faudrait faire pour afficher les valeurs qui ont au moins 5 lettres [a-zA-Z]{5} ? est-ce qu'il existe un systeme de regex de ce genre pour intérroger une requête.

    Par exemple:

    Code sql imaginaire : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    colonne LIKE '%{[a-zA-Z]{5}}%'
    il faudrait un truc de ce type , biensur le regex là n'est pas une valeur mais j'aimerais afficher seulement les colonnes avec au moins 5 lettres au choix.

    Merci.

  2. #2
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 293
    Points : 77
    Points
    77
    Par défaut
    J'ai fais une recherche et peut etre que ce code irait bien:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    colonne REGEXP '.*[a-z].*'

    Comment il faudrait faire pour avoir 5 lettres minimum ?

  3. #3
    Membre expérimenté
    Avatar de islamov2000
    Homme Profil pro
    Ingénieur d'études & developpement en informatique
    Inscrit en
    Septembre 2007
    Messages
    814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études & developpement en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 814
    Points : 1 717
    Points
    1 717
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par mecmec Voir le message
    J'ai fais une recherche et peut etre que ce code irait bien:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    colonne REGEXP '.*[a-z].*'

    Comment il faudrait faire pour avoir 5 lettres minimum ?
    REGEXP n'est pas un standard de sql.
    Sous quel SGBD travailles tus?
    d'avoir Pensé à voter positivement pour ceux qui vous ont aidés et surtout à mettre si le cas.
    ça encourage.

  4. #4
    Membre expérimenté
    Avatar de islamov2000
    Homme Profil pro
    Ingénieur d'études & developpement en informatique
    Inscrit en
    Septembre 2007
    Messages
    814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études & developpement en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 814
    Points : 1 717
    Points
    1 717
    Billets dans le blog
    6
    Par défaut
    Sous Oracle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select  * from la_table 
    WHERE REGEXP_LIKE (la_colonne, '[a-zA-Z]{5}');
    d'avoir Pensé à voter positivement pour ceux qui vous ont aidés et surtout à mettre si le cas.
    ça encourage.

  5. #5
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 293
    Points : 77
    Points
    77
    Par défaut
    Sous quel SGBD travailles tus?
    Je suis sous le stantard.

  6. #6
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 154
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Ah ouais quand même...

    SQL est une norme. Pas un logiciel.

    Quel est ton logiciel ?

    Microsoft SQL Server ? Oracle ? MySQL ? PostgreSQL ? Access ? SQL Lite ? Autre-chose ?

    (Et je t'en supplie, ne répond pas "PHP, Easy PHP ou WAMP", c'est pas des SGBD)
    On ne jouit bien que de ce qu’on partage.

  7. #7
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 293
    Points : 77
    Points
    77
    Par défaut
    J'avais pas compris la question, j'ai MySQL.

  8. #8
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 782
    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 782
    Points : 52 780
    Points
    52 780
    Billets dans le blog
    5
    Par défaut
    En SQL normatif la solution est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     WHERE CHARRACTER_LENGTH(MACOLONNE) >= 5
       AND SUBSTRING(MACOLONNE, 1, 1) BETWEEN 'A' AND 'Z' COLLATE French_CI_AS
       AND SUBSTRING(MACOLONNE, 2, 1) BETWEEN 'A' AND 'Z' COLLATE French_CI_AS
       AND SUBSTRING(MACOLONNE, 3, 1) BETWEEN 'A' AND 'Z' COLLATE French_CI_AS
       AND SUBSTRING(MACOLONNE, 4, 1) BETWEEN 'A' AND 'Z' COLLATE French_CI_AS
       AND SUBSTRING(MACOLONNE, 5, 1) BETWEEN 'A' AND 'Z' COLLATE French_CI_AS
    Avec certains SGBDR évolués il existe des solutions plus simples et plus efficaces. Exemple pour MS SQL Server :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE MACOLONNE LIKE '%[A-Z][A-Z][A-Z][A-Z][A-Z]%' COLLATE French_CI_AS
    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/ * * * * *

  9. #9
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 293
    Points : 77
    Points
    77
    Par défaut
    Bonjour,

    Ok merci.

    Mais c'est bizarre car celui ci fonctionne bien on dirait:


    Code mysql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    and commentaire not REGEXP '([:alpha:]{4})' // Refuse le flood via l'alphabet si un caractere est repeté plus de 4 fois , exemple: Floooood
    and commentaire not REGEXP '([:print:]{4})'  // Idem sauf que cette fois c'est avec les caracteres speciaux
    and commentaire REGEXP '.*[a-zA-Z]{5}.*' // Il affiche seulement les commentaires avec au moins 5 lettres a-zA-Z car parfois des gens tapent juste "............"


    Je sais pas si c'est top

    Peut-être qu'il est possible de faire ceci :

    Code mysql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    and commentaire REGEXP '.*[a-zA-Z].*[a-zA-Z].*[a-zA-Z].*[a-zA-Z].*[a-zA-Z].*' // affiche les commentaires avec plus de 5 lettres

  10. #10
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 782
    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 782
    Points : 52 780
    Points
    52 780
    Billets dans le blog
    5
    Par défaut
    REGEXP n'existe pas en SQL.
    Vous pouvez utiliser l'opérateur SIMILAR si votre SGBDR le supporte.

    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/ * * * * *

  11. #11
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 293
    Points : 77
    Points
    77
    Par défaut
    D'habitude ça se passe plutot bien sur ce forum mais là j'ai l'impression que j'me suis trompé de forum.

    Language SQL = c'est différent de MySQL ?

    Est-ce qu'un modérateur peut déplacer ce sujet dans cette rubrique: http://www.developpez.net/forums/f44...donnees/mysql/ (MySQL), merci.

    Il faut savoir qu'avec MySQL le REGEXP il fonctionne bien mais je l'organise mal et pour moi "language sql je croyais que c'était language mysql".

    Salutations

  12. #12
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 799
    Points : 34 032
    Points
    34 032
    Billets dans le blog
    14
    Par défaut
    SQL est un langage normalisé dont SQLPro est un puriste.
    Voir son site pour apprendre le SQL normatif.

    MySQL est un système de gestion de bases de données relationnel (SGBDR). Il en existe d'autres : Postgresql, Oracle, SQL Server, DB2...

    Les SGBDR utilisent le langage SQL mais chaque SGBDR y ajoute ses adaptations ou met plus ou moins longtemps à implémenter les évolutions de la norme SQL.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    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 !

  13. #13
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 782
    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 782
    Points : 52 780
    Points
    52 780
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par mecmec Voir le message
    D'habitude ça se passe plutot bien sur ce forum mais là j'ai l'impression que j'me suis trompé de forum.

    Language SQL = c'est différent de MySQL ?
    D’où l'importance :
    1) de respecter la charte de postage qui invite à dire avec quel SGBDR vous travaillez lorsque vous postez une demande.
    http://www.developpez.net/forums/a69...gage-sql-lire/
    2) de plus vous avez indiqué dans votre premier message "avec SQL"... et non pas "avec MySQL" ou "avec le dialecte SQL de MySQL"...

    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/ * * * * *

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/06/2008, 09h17
  2. Clause WHERE pour SELECT entre deux dates
    Par arogues dans le forum Langage SQL
    Réponses: 8
    Dernier message: 17/04/2008, 17h42
  3. Réponses: 3
    Dernier message: 02/07/2007, 11h58
  4. Where not like incoherent
    Par javaboy dans le forum Access
    Réponses: 2
    Dernier message: 08/03/2007, 16h25
  5. Afficher des mots lus en entrée ou sur un fichier
    Par Premium dans le forum Langage
    Réponses: 5
    Dernier message: 13/10/2006, 09h52

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