Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#1 10/10/2008 12:08:40
- echataig
- Membre
Recherche sans accents et caractères spéciaux LATIN9
Bonjour,
je sais que plusieurs posts traitent déjà du problème des encodages lors des recherches mais ce problème n'a apparemment pas été soulevé, sauf erreur de ma part.
Je désire faire une recherche sur une base encodée en LATIN9, insensible à la casse et aux accents, et qui est capable de trouver les caractères spéciaux tels que € et œ.
La fonction to_ascii fréquemment utilisée dans les solutions données supprime les caractères € et œ.
Comment puis-je conserver ces caractères spéciaux tout en enlevant les accents d'un champ (et passer en lowercase) ?
[EDIT] Petite précision, j'ai une version qui fonctionne avec translate(), mais qui est beaucoup trop lente.
Dernière modification par echataig (10/10/2008 12:20:47)
Hors ligne
#2 10/10/2008 14:12:28
- gleu
- Administrateur
Re : Recherche sans accents et caractères spéciaux LATIN9
À ma connaissance, il n'existe pas d'autres solutions que translate. Donc ma première idée serait d'améliorer la rapidité de la requête.
Guillaume.
Hors ligne
#3 10/10/2008 15:49:50
- echataig
- Membre
Re : Recherche sans accents et caractères spéciaux LATIN9
Je veux bien améliorer la rapidité de la partie de ma requête qui ne touche pas au problème sus-cité, mais entre la version avec translate() et la version sans, il y a déjà un facteur 20 au niveau du temps d'exécution, ce qui serait un gain appréciable.
[EDIT] Hé bien je ne vois qu'une solution : pré-calculer une copie des champs de recherche dans un autre champ avec les caractères désaccentués et les caractères spéciaux conservés.
Si vous voyez une autre solution, n'hésitez pas à m'en faire part.
Dernière modification par echataig (10/10/2008 16:12:10)
Hors ligne
#4 10/10/2008 16:48:25
- gleu
- Administrateur
Re : Recherche sans accents et caractères spéciaux LATIN9
Il faudrait que je connaisse un peu la requête, mais je verrais bien un index fonctionnel utilisant l'appel de la fonction translate pour cette colonne.
Guillaume.
Hors ligne