OVH Cloud OVH Cloud

besoin de votre aide pour des requetes sql

2 réponses
Avatar
dav
pouriez vous m'aider a créer les requetes sql suivantes :

pour chercher un mot dans un mémo je fais

sql = "select * from matable where champ like " & "*" & mot & "*"

je voudrais les options suivantes :

- chercher dans un champ qui commence par ce mot...
- chercher dans un champ qui fini par ce mot...

et aussi chercher un mot entier, par exemple si le champ contient
camarade je veux pouvoir trouver soit "rade" soit uniquement "camarade"
avec des boutons option....

ce que j'ai du mal à cerner c'est la différence dans le résultat d'un
recherche sql entre "like " et "=" et l'utilisation des astérisques...

merci de votre aide...

dav

2 réponses

Avatar
Gloops
Bonjour Dav,

Pour la recherche sur mot entier je vais être un peu flou, mais ça doit
être quelque chose du style "Like '[ .,;-]rade[ .,;-]'"

ce qui te trouvera rade, dans "rester en rade", et pas camarade, alors que
"= '[ .,;-]rade[ .,;-]'" ne pourrait te trouver que '[ .,;-]rade[ .,;-]'
qu'on ne met pas souvent dans un champ de base de données. Voilà pour la
différence entre Like et =.

Je crains toutefois qu'il ne faille chercher rade au début et à la fin
du champ, et ajouter les résultats à ceux de la requête précédente. En
effet, si c'est au début ou à la fin du champ, il n'y a pas de caractère
séparateur avant, respectivement après. Je rappelle que pour concaténer
les résultats de deux requêtes existe le mot-clé UNION, qui te renverra
une erreur si les deux requêtes ne comportent pas les mêmes champs.

Pour le reste, je t'invite à vérifier ce que je dis, ça fait un peu plus
d'un an que je ne m'en suis pas servi et j'ai depuis utilisé SQL sur une
autre plateforme.

Si tu mets "Like '*rade*'", tu trouves rade que ce soit un mot complet
ou non, donc tu trouves "camarade" aussi bien que "rade de Brest".

Bien entendu si tu veux que le mot critère soit au début du champ, tu ne
mets pas d'étoile devant.

"Like 'rade*'" te renverra "rade de Brest", mais pas "camarade" ni
"rester en rade".

Ensuite, il te reste à créer ta procédure cmdBouton_Click pour qu'elle
crée la requête en tenant compte des différents contrôles de ton formulaire.

Quelque part dans la routine il pourra y avoir un
If chkBox1 = False Then
strSQL = strSQL + "*"
Endif

ce qui peut aussi, si je ne m'abuse, s'écrire
strSQL = strSQL + iif(chkBox1, "", "*")

A toi de mettre un nom plus explicite que chkBox1 ...
Et de préférence fais-le avant de définir les procédures événementielles
qui y sont liées.
__________________________________
dav a écrit, le 01/11/2004 13:20 :

pouriez vous m'aider a créer les requetes sql suivantes :

pour chercher un mot dans un mémo je fais

sql = "select * from matable where champ like " & "*" & mot & "*"

je voudrais les options suivantes :

- chercher dans un champ qui commence par ce mot...
- chercher dans un champ qui fini par ce mot...

et aussi chercher un mot entier, par exemple si le champ contient
camarade je veux pouvoir trouver soit "rade" soit uniquement "camarade"
avec des boutons option....

ce que j'ai du mal à cerner c'est la différence dans le résultat d'un
recherche sql entre "like " et "=" et l'utilisation des astérisques...

merci de votre aide...

dav



Avatar
Alain Ménard
bonsoir,

mets le signe % au lieu de *

--
Amicalement

Alain Ménard

"dav" a écrit dans le message de
news:4186297b$0$3594$
pouriez vous m'aider a créer les requetes sql suivantes :

pour chercher un mot dans un mémo je fais

sql = "select * from matable where champ like " & "*" & mot & "*"

je voudrais les options suivantes :

- chercher dans un champ qui commence par ce mot...
- chercher dans un champ qui fini par ce mot...

et aussi chercher un mot entier, par exemple si le champ contient
camarade je veux pouvoir trouver soit "rade" soit uniquement "camarade"
avec des boutons option....

ce que j'ai du mal à cerner c'est la différence dans le résultat d'un
recherche sql entre "like " et "=" et l'utilisation des astérisques...

merci de votre aide...

dav