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 :

BETWEEN LIKE


Sujet :

Langage SQL

  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 085
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 085
    Points : 886
    Points
    886
    Par défaut BETWEEN LIKE
    Bonjour , je dois faire une requete me sortant une liste de nom de client.
    Les paramètres seront "Du client" --> "Au client" en laissant la possibiliter d'entrer des abrévéations de nom.

    Exemple
    Du Client : A au client : Z = la liste de tout les clients
    Du client : ATE au client : STO = La liste des clients dont leur nom commence par un préfixe se situant entre ATE et STO
    Ps : Le nombre de caractère passés en paramètre n'ont aucune répercussion sur le nombre de lettre du nom bient entendu %

    Merci pour tout

    Je trouvaille sous Access pour info

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    Et pourquoi pas simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nom_client >= param_inf OR nom_client <= RPAD(param_sup,LENGTH(nom_client),'Z')
    EDIT : j'ai ajouté le RPAD pour concaténer les Z à la fin de la chaine de caractères

    EDIT2 : mais la proposition de nantais est correcte si tu ne veux pas des noms LIKE 'STO%'

  3. #3
    Membre habitué Avatar de nantais
    Inscrit en
    Juillet 2004
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 158
    Points : 192
    Points
    192
    Par défaut
    Perso, j'aurais plutôt mis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    nom_client >= param_inf AND nom_client <= param_sup

  4. #4
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 085
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 085
    Points : 886
    Points
    886
    Par défaut
    Citation Envoyé par nantais
    Perso, j'aurais plutôt mis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    nom_client >= param_inf AND nom_client <= param_sup
    Oui, moi aussi (erreur de frappe je suppose)

    Heu , pour le résultat, il n'est pas concluant.

    Si je met Du client : "A" au client "D", il ne va m'afficher que ceux commencant par "A,B,C" Et pas ceux par "D".
    Ce qui semble assez logique et qui me convient pas tout a fait.

    C'est pour cela que le LIKE m'intéressait.

  5. #5
    Membre habitué Avatar de nantais
    Inscrit en
    Juillet 2004
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 158
    Points : 192
    Points
    192
    Par défaut
    Le pb du LIKE est que c'est opérateur d'égalité!

    Si tu es capable de déterminer la longueur des chaines param_inf et param_sup (lg), alors tu peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    substr(nom_client,1,lg) BETWEEN param_inf AND param_sup

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    As-tu essayé le code que j'ai proposé dans ce cas ?

    à la limite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (nom_client BETWEEN param_inf AND param_sup) OR nom_client LIKE param_sup || '%'

  7. #7
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 085
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 085
    Points : 886
    Points
    886
    Par défaut
    Citation Envoyé par orafrance
    As-tu essayé le code que j'ai proposé dans ce cas ?

    à la limite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (nom_client BETWEEN param_inf AND param_sup) OR nom_client LIKE param_sup || '%'
    Ton premier code m'affichait tout les clients puisque tout les noms de client sont soit plus grand ou égal à param1 ou plus petit ou égale à param2.

    De toute façon, tu te rattrapes super bien avec ton deuxième code donc

    Merci à tous et bonne journée

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    ça m'étonne quand même que le premier ne fonctionne pas puisqu'il revient à tester :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nom_client BETWEEN param_inf AND param_sup||'Z'
    m'enfin...

  9. #9
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 085
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 085
    Points : 886
    Points
    886
    Par défaut
    Citation Envoyé par orafrance
    ça m'étonne quand même que le premier ne fonctionne pas puisqu'il revient à tester :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nom_client BETWEEN param_inf AND param_sup||'Z'
    m'enfin...
    Quel , j'avais pas vu ton Edit du premier Post.

    Sorry A+

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    à noter qu'un Z devrait suffir et non pas le RPAD de Z

    tu confirmes bien que ça fonctionne alors ? Tu me rassures

  11. #11
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 085
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 085
    Points : 886
    Points
    886
    Par défaut
    RPAD n'est pas accessible depuis Access apparament

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

Discussions similaires

  1. Utilisation spéciale de LIKE
    Par tonyskn dans le forum Langage SQL
    Réponses: 5
    Dernier message: 19/07/2024, 10h36
  2. Probleme dans une clause like !
    Par adil dans le forum Langage SQL
    Réponses: 6
    Dernier message: 15/07/2003, 16h47
  3. Question sur le BETWEEN d'Oracle
    Par Demco dans le forum Langage SQL
    Réponses: 9
    Dernier message: 06/05/2003, 15h23
  4. [VB6] [ADO] Like sur base Access
    Par dlpxlid dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 24/01/2003, 11h03
  5. Créer un interpréteur de langage inspiré du Basic
    Par Picasso dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 11/05/2002, 17h10

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