Page 1 sur 1

trouver une chaine dans un champ

Posté : 13 janv. 2009, 16:43
par Invité
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.

Posté : 13 janv. 2009, 17:41
par jojolapine
C'est pas très clair...
Si tu ne veux pas de LIKE alors utilise "="...
Ton champs contient plusieurs marques à la fois?

Re: trouver une chaine dans un champ

Posté : 13 janv. 2009, 18:28
par Ryle
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 :)

Posté : 13 janv. 2009, 18:31
par Sékiltoyai
Sinon ca te dit pas une base bien modélisée avec une table à part pour les marques ?

Posté : 13 janv. 2009, 21:47
par AB
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: