Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Utilisation de LIKE avec des index et des accents

10 réponses
Avatar
Tofalu
Bonjour

Pour visualiser le problème:

J'ai un exemple facile pour visualiser le problème, ce qui aide beaucoup à
la compréhension:
1- Créer une nouvelle base Access
2- Ajouter une table (nommer table1)
3- Mettre 2 champs dans cet table:
- ID en numéroAuto (clé primaire)
- Nom en texte, avec l'index à Oui (avec doublon)
4- Entrez les éléments pépé et jété.
5- Executez ces requêtes

Code:
SELECT * FROM Table1 WHERE nom LIKE "pé*"
Code:

SELECT * FROM Table1 WHERE nom LIKE "jé*"

La première ne retourne rien, alors que la seconde retourne une ligne.

Il semble que un problème similaire est était corrigé sous SQL Server. Quant
est t'il de Access 2003 ?

Précisions : Le problème est le même en Unicode ou sans compression unicode.

Ma question est donc : Comment utiliser mes index pour des recherches plus
performantes si le résultat est aléatoire ?

10 réponses

Avatar
Tofalu
A priori le problème est le même sous Access 2000

Autre précision, je possède bien le dernier service pack Access et Jet.

Merci de votre aide
Avatar
3stone
Salut,

"Tofalu" |A priori le problème est le même sous Access 2000
|
| Autre précision, je possède bien le dernier service pack Access et Jet.


Jamais entendu parler d'un "problème" à ce niveau...


Tu devrais plutôt commencer par ne PAS appeler un champ "Nom"
car CA c'est un problème !!


--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw
Avatar
Raymond [mvp]
Bonjour.

ce qu'on fait en général on supprime les caractères accentués en ajoutant
une fonction dans la requête.
voir : http://officesystem.access.free.fr/vba/supprimer_accents.htm

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Tofalu" a écrit dans le message de news:

A priori le problème est le même sous Access 2000

Autre précision, je possède bien le dernier service pack Access et Jet.

Merci de votre aide


Avatar
Tofalu
3stone :>> Appelle le champ comme tu veux, le problème reste le même. As tu
au moins testé les quelques lignes que j'ai donné en exemple ?

Raymond :>> Tout à fait d'accord mais dans ce cas, mon index ne me sert plus
à rien. Car le temps de recherche gagné est perdu en temps de conversion. De
plsu ici, ce n'est pas le cas, mais il est parfois nécessaire de faire une
recherche avec des accents.
Avatar
3stone
Salut,,

"Tofalu"
| 3stone :>>
| As tu au moins testé les quelques lignes que j'ai donné en exemple ?


Tu inverse le problème !

Tu crois vraiment que c'est la première fois que j'utilise un Like ?
Tu pense que Access fait l'analyse des mots recherchés ?
et qu'il soit d'accord pour "jété" et n'accepte pas "pépé"...

:-)


--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw
Avatar
Tofalu
C'est dommage que tu n'ai pris le temps de tester. C'est tout autant dommage
de réagir comme ça sur un news group ...

Mais bon c'est pas grave. J'aurais espéré que tu pourrais me dire pourquoi
l'utilisation d'un index sur un champ empeche une recherche avec like.

Me croit pas si tu veux toujours est il que e problème existe bien, qu'il a
été solutionné sur SQL Server (CF, la doc Microsoft)
Avatar
3stone
Salut,

"Tofalu"
| C'est dommage que tu n'ai pris le temps de tester. C'est tout autant dommage
| de réagir comme ça sur un news group ...


Voilà, j'ai perdu mon temps et reconstruit ton exemple.
Comme je le disais déjà, dans les DEUX cas, j'ai la réponse correcte.


| Mais bon c'est pas grave. J'aurais espéré que tu pourrais me dire pourquoi
| l'utilisation d'un index sur un champ empeche une recherche avec like.
|
| Me croit pas si tu veux toujours est il que e problème existe bien, qu'il a
| été solutionné sur SQL Server (CF, la doc Microsoft)

S'il faut SQ Server pour arriver à faire une recherche avec Like...

Tu devrais par contre donner tes sources, le numéro de l'article de la KB qui traite cela...
"CF la doc Microsoft", c'est un peu vague ;-)


--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw
Avatar
Tofalu
Mes sources concernant le problème SQL Server :

http://support.microsoft.com/default.aspx?scid=kb;fr;290918

Ce support traite d'un problème des caractères génériques avec like et un
champ indexé.

Curieux que chez toi cela fonctionne alors que chez plusieurs autres
utilisateurs cela ne fonctionne pas non plus
Avatar
3stone
Salut,

"Tofalu"
| Mes sources concernant le problème SQL Server :
|
| http://support.microsoft.com/default.aspx?scid=kb;fr;290918
|
| Ce support traite d'un problème des caractères génériques avec like et un
| champ indexé.
|
| Curieux que chez toi cela fonctionne alors que chez plusieurs autres
| utilisateurs cela ne fonctionne pas non plus


Tu as toujours dit que cela ne fonctionnait pas avec *Access*
et qu'il fallait SQL Server pour résoudre le problème !

De plus, tu as des problèmes de compréhension lors de tes lectures ;-)

Le lien que tu donne parle de (je site)
Comportement incorrect de LIKE [-] lors de l'utilisation d'un index


Faire un "Like [-]"
n'a vraiment rien a voir avec un: Like "Pé*"

Applique toi pour comprendre ce que tu lis :-)


--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw
Avatar
Tofalu
Tu as toujours dit que cela ne fonctionnait pas avec *Access*
et qu'il fallait SQL Server pour résoudre le problème !


Peut être que c'est toi qui n'a pas bien lu !

J'ai dit :

Il semble que un problème similaire est était corrigé sous SQL Server. Quant
est t'il de Access 2003 ?


Ce qui ne veux pas dire qu'il s'agisse du même problème mais similaire (si
si y a une nuance, regarde dans un dico !) Et je n'ai jamais dit qu'on avait
besoin d'utiliser SQL Server !!!

Je croyais qu'un newsgroup était là pour aider les utilisateurs et non les
prendre de haut quand ils ont un besoin. Je suis déçu par une telle attitude.

En tout cas je tiens quand même à remercier Raymond, même si sa réponse ne
résout pas mon problème, lui au moins a su rester pédagogique sans remettre
en question mes propos.

Voilà sujet clos. Merci quand même. ;) à plus