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 :

WHERE champs contient donnée


Sujet :

Langage SQL

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 63
    Par défaut WHERE champs contient donnée
    Bonjour,

    Le titre est peut être un peu bizarre mais je n'ai pas trouvé mieux pour décrire le problème

    En gros, je veux faire une requête SQL avec un WHERE mais au lieu que cela cherche ma chaine de caractère exacte cela cherche les entrée la contenant.


    Exemple à la con :

    Ma chaine de caractère est "6800"
    Je veux que ma requête SQL me renvoie le champ contenant l'entrée Nix6800


    Si c'est possible, j'imagine que ça aurait une tête d'opérateur, plutôt que WHERE Champ='$Chaine' il faudrait remplacer le = par ... c'est ce que je vous demande

    Merci d'avance pour votre aide !

  2. #2
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Par défaut
    Citation Envoyé par Nix6800 Voir le message
    Si c'est possible, j'imagine que ça aurait une tête d'opérateur, plutôt que WHERE Champ='$Chaine' il faudrait remplacer le = par ... c'est ce que je vous demande
    par like

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 63
    Par défaut
    J'ai mit

    WHERE champ LIKE '$chaine'

    ça marche quand c'est exactement la même mais pas quand elle est différente

    Pour un exemple plus concret, la chaine est "files/marketing/Standard Offers" et ce qui est contenu est "files/marketing/Standard Offers/Offres"

  4. #4
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281

  5. #5
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 502
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WHERE champ LIKE '$chaine%'
    Grillé

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 63
    Par défaut
    Merci beaucoup, c'est sur que ça marche mieux quand on l'utilise correctement ^^'


    Maintenant il me faudrait un opérateur qui fasse en gros l'inverce.

    Maintenant la chaine c'est Nix6800 et le champ contient Nix (ce sera toujours la fin de la chaine qui sera "en trop") je n'arrive pas à trouver dans la liste l'opérateur correspondant

  7. #7
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 502
    Par défaut
    Je ne comprend pas?

    (ce sera toujours la fin de la chaine qui sera "en trop")

  8. #8
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Par défaut
    quel SGBD?
    cela doit donner un truc dans ce style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    where 'NIX6800' like nom || '%'
    avec || l'opérateur de concaténation

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 63
    Par défaut
    MaitrePylos -> La chaine va contenir des caractères en trop, ainsi j'aurais la chaine "Nix6800" et je veux avec que la BDD me renvoie le champ "Nix"


    Cybher -> Je te fais mes plus plates excuses mais là je ne comprend pas du tout le fonctionnement de cette ligne, si tu peux m'éclairer ^^' (j'utilise Mysql)

  10. #10
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Par défaut
    avec mysql
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE 'NIX6800' LIKE concat(champ,'%')
    quelle partie ne comprends tu pas?

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 63
    Par défaut
    Entre autres le coup du changement d'ordre entre le nom du champ et la chaine

  12. #12
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Par défaut
    avec l'utilisation de like, on est obligé d'inverser le champ et la chaine de caractère puisque la chaine de caractère contient plus que le champ

  13. #13
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 135
    Par défaut
    avec Mysql la fonction instr fera l'affaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Where instr(chaine,champ)<>0
    A+

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 63
    Par défaut
    teach -> Ca revient au même qu'avec des LIKE, ça ne fonctionne que si c'est la chaine qui est la plus courte.



    Merci beaucoup pour votre aide, mais finalement j'ai utilisé la méthode de barbare : je découpe ma chaine dans une boucle de sorte à vérifier s'il y a concordance. C'est plus gourmand en ressources mais ça marche

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 23/12/2010, 20h12
  2. Réponses: 2
    Dernier message: 23/12/2010, 18h35
  3. WHERE 'champ' EST CONTENU DANS 'donnée'
    Par Caalador dans le forum Requêtes
    Réponses: 4
    Dernier message: 05/05/2010, 11h41
  4. [XSLT]Testez si le champ contient un caractère
    Par totoen dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 14/12/2005, 15h47
  5. Si champs contient ??
    Par roots_man dans le forum ASP
    Réponses: 2
    Dernier message: 29/10/2004, 19h54

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