PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#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

Pied de page des forums