trouver une chaine dans un champ

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : trouver une chaine dans un champ

par AB » 13 janv. 2009, 21:47

Sinon ca te dit pas une base bien modélisée avec une table à part pour les marques ?
+1
Si c'est encore possible, faudrait sérieusement y penser :wink:

par Sékiltoyai » 13 janv. 2009, 18:31

Sinon ca te dit pas une base bien modélisée avec une table à part pour les marques ?

Re: trouver une chaine dans un champ

par Ryle » 13 janv. 2009, 18:28

Je connais la clause LIKE mais elle ne cherche pas une correspondance stricte, plutôt une ressemblance.
Vi, c'est vrai que la fonction LIKE aime bien retrouver d'autres enregistrements que ceux attendus, parce qu'ils lui rappellent vaguement quelque chose qui pourrait potentiellement ressembler à ce que toi tu pourrais attendre... ;)

Plus sérieusement, si tu veux une correspondance stricte, c'est effectivement l'opérateur "=" qu'il te faut utiliser, mais dans ce cas il te faut tester si l'enregistrement en base correspond strictement à la valeur "renault,citroen,ford,mercedes" et pas savoir s'il peut contenir la chaine "ford".

L'opérateur LIKE te permet de spécifier une partie de la chaine recherchée en remplaçant les parties de la chaine que tu ne connais pas par un joker. Elle convient donc tout à fait dans ton cas et te retourne tous les enregistrements qui respectent ton masque (et pas ceux n'ayant qu'une vague ressemblance avec celui-ci ;)).

Code : Tout sélectionner

SELECT ... FROM ... WHERE marques LIKE '%ford%'
Te retourne tous les enregistrements qui contiennent la chaine "ford".

Au pire, la "ressemblance" pourrait être liée à la casse des lettres, chose que tu peux forcer en changeant le type de champ ou en spécifiant qu'il s'agit d'une chaine binaire :)

par jojolapine » 13 janv. 2009, 17:41

C'est pas très clair...
Si tu ne veux pas de LIKE alors utilise "="...
Ton champs contient plusieurs marques à la fois?

trouver une chaine dans un champ

par Invité » 13 janv. 2009, 16:43

Bonjour à tous,

Comment faire en sql si une chaine de caractères existe bien dans un champ?
Par exemple, voici le contenu d'un champ "marques"

renault,citroen,ford,mercedes

Comment vérifier si la chaine "ford" existe bien dans le champ"?
Je connais la clause LIKE mais elle ne cherche pas une correspondance stricte, plutôt une ressemblance.

Merci pour vos réponses.