Bonjour à tous et bonne année !
Ma base est en UNICODE sur PgSQL 8.1 sur un serveur Gentoo.
Je souhaite faire une recherche du type :
Jusque là c'est bon. Maintenant je souhaite que ma recherche ne soit pas sensible à la casse et surtout prenne en compte les accents !
Code : Sélectionner tout - Visualiser dans une fenêtre à part SQL > SELECT titre FROM table WHERE titre LIKE '%toto%';
La donnée que je veux rechercher provient d'un formulaire traité en PHP en UTF-8.
J'ai donc tenter le code suivant (en gros) :
Mais cela ne fonctionne pas dès qu'il y a un accent. La fonction LOWER converti étrangement....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 PHP > $Recherche = strtolower($Recherche); SQL > SELECT titre FROM table WHERE LOWER(titre) LIKE '%$Recherche%';
Voyant qu'ils ne convertissent pas de la même manière j'ai tenter ceci :
Mais toujours pas ... :'(
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 PHP > $Recherche = SELECT LOWER($Recherche); SQL > SELECT titre FROM table WHERE LOWER(titre) LIKE '%$Recherche%';
J'ai testé avec l'opérateur ~* mais sans succès (peut être une mauvaise utilisation de ma part).
J'ai trouvé quelques méthodes sur le forum comme notament le fait d'avoir un autre champ sans les accents et faire la recherche dessus. Mais cette solution c'est pas envisageable dans mon cas car je fais des recherches sur beaucoup de tables et champs et surtout je ne traite pas que du français, l'anglais, l'allemand et le japonais sont de la partie (d'autres risquent de s'inviter aussi).
Je commence à me poser des questions car si je n'arrive pas à traiter du français, ça risque d'être très compliqué pour les autres langues !!!!!
C'est pour cela que je fais appel à vos compétences![]()
Partager