8795 sujets

Développement web côté serveur, CMS

Bonjour,

Alors voila j'ai une table qui contient des noms de villes accentuées, et je veut recherché dans cette table sans tenir compte des accents.
J'ai lut qu'il fallait utilisé la COLLATION hors voici ma requête:
SELECT * FROM cp WHERE REPLACE(ville,'-',' ') COLLATE latin1_german1_ci REGEXP '^(ange)$' ORDER BY Ville

J'ai une ville qui s'appelle Angé, avec la requête ci dessus aucun résultat, avec cette requête ci:
SELECT * FROM cp WHERE REPLACE(ville,'-',' ') COLLATE latin1_german1_ci REGEXP '^(angé)$' ORDER BY Ville

Evidemment j'obtient bien ma ville Angé.
Donc comment ne pas tenir compte des accents?
Merci
Salut Cerede,

Pour effectuer une recherche, il faut utiliser Like pour donner plus de choix dans tes conditions.

Exemple :

SELECT * FROM cp WHERE REPLACE(ville,'-',' ') LIKE '%ange%' ORDER BY Ville ASC


Normalement, ca devrait suffir (sur mon moteur de recherche interne ca me prend en compte avec où sans accent)

Edit : les % autour de ange veulent dire "rechercher tout ce qui contient 'ange' ".

Si tu ne voulais rechercher que les champs qui contiennent 'ange' (avec ou sans accent) il suffit d'enlever ces %. (en clair % ca équivaut au * dans les moteur de recherche principaux)
Modifié par Super_baloo8 (13 May 2007 - 04:01)
Oui j'utilisais LIKE avant mais REGEX permettait une recherche plus rapide, mais bon je suis revenu a LIKE, car le probleme vient de REGEX Smiley decu

Et en passant le "COLLATE latin1_german1_ci" est important, s'il n'est pas mit on ne peut pas chercher avec ou sans accents Smiley cligne
Modifié par cerede2000 (13 May 2007 - 08:49)