Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/12/2004, 16h47   #1
Invité de passage
 
Inscription : décembre 2004
Messages : 2
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 2
Points : 0
Points : 0
Par défaut Caractère accentué

Lorsque j'effectue une requête par exemple select * from table where ville="montreal"... les resultats affichés ne vont pas inclure ceux qui contienne "montréal" avec l'accent aigu... qqn pourrait m'aider ou m'indiquer comment dire a postgre d'ignorer les accents....et j'oubliais la technique de "remplacement" faut laisser tomber..trop lourd

Rich
rbaby23 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2004, 20h41   #2
Futur Membre du Club
 
Inscription : juillet 2004
Messages : 13
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 13
Points : 15
Points : 15
Tu peux essayer la fonction to_ascii() à condition que le volume d'enregistrements ne soit pas pharaonique. Dans ton cas ça donnerait à peu près cela (à condition d'utiliser un encodage latin1) :
select * from table where to_ascii(ville,'LATIN1')='montreal';
Jedei est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2004, 22h03   #3
Invité de passage
 
Inscription : décembre 2004
Messages : 2
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 2
Points : 0
Points : 0
Citation:
Envoyé par Jedei
Tu peux essayer la fonction to_ascii() à condition que le volume d'enregistrements ne soit pas pharaonique. Dans ton cas ça donnerait à peu près cela (à condition d'utiliser un encodage latin1) :
select * from table where to_ascii(ville,'LATIN1')='montreal';
merci ca a aider mais.....lorsque j'écris montréal :--> aucun résultat ne m'est retourné
rbaby23 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/12/2004, 12h57   #4
Futur Membre du Club
 
Inscription : juillet 2004
Messages : 13
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 13
Points : 15
Points : 15
C'est normal avec la solution proposée qui suppose que tu maîtrises que le côté droit de l'expression, ce qui me semblait être le cas. D'une façon générale, 2 solutions :
1/ tu maîtrises le nom de la ville lors de la requête .C'est la solution qui présentera les meilleures performances en termes de rapidité
2/ tu utilises des fonctions du type to_ascii(), upper(), ou LIKE (ou ILIKE c'est selon) ou des expressions rationnelles. Les fonctions peuvent bien entendu être imbriquées et utilisées des deux côtés de l'opérateur d'égalité.

Pour ce qui me concerne je ne vois pas d'autre alternative.
Pour faire simple soit tu sais exactement ce que tu recherches et c'est la solution 1, soit tu sais à peu près et c'est la solution 2
Jedei est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/12/2004, 19h16   #5
Membre émérite
 
Avatar de hpalpha
 
Inscription : mars 2002
Messages : 770
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 770
Points : 833
Points : 833
Pour optimiser la recherche si ta table est importante, tu peux creer un index fonctionnel, par exemple :

Code :
CREATE INDEX idxtoascii ON TABLE (to_ascii(ville));
hpalpha est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h16.


 
 
 
 
Partenaires

Hébergement Web