Recherche sur des données accentuées en SQL

Résolu
manio11 Messages postés 49 Date d'inscription   Statut Membre Dernière intervention   -  
manio11 Messages postés 49 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

j'ai une base de donnée dans laquelle j'ai une table "infos" avec un champs "nom" possédant des caractères accentués. Je voudrai faire une recherche dans cette table, notamment avec la clause LIKE, mais comment avoir des résultats si j'ai un nom tel que "eléto" et qu'un critere "eleto" est utilisé. Bref, comment ne pas tenir comte des accents sur les données.

j'ai entendu parler de COLLATE, si c'est la solution : comment l'utiliser ? je suis sur mysql.

Merci



A voir également:

8 réponses

fiu
 
Salut,

On sort malheureusement du standard SQL pour tomber dans des spécifications propres à tel ou tel SGBD. Donc pour que l'on puisse te répondre efficacement, tu dois absolument préciser le SGBD que tu utilises.
0
manio11 Messages postés 49 Date d'inscription   Statut Membre Dernière intervention   2
 
j'utilise Mysql, avec un moteur de recherche en PHP.
0
fiu
 
Salut,

en MySQL, je n'ai pas trouvé de fonctions étendues pour les conversions de chaine. il existe REPLACE(chaine, motif, remplaçant) qui renvoie chaine avec toutes les occurrences de motif remplacées par remplaçant.

Ainsi, en encapsulant les REPLACE(), tu peux arriver à un "désaccentueur"...
soit la chaine s à "traduire"
pour é tu aurais REPLACE(s, 'é', 'e')
pour é & è tu aurais REPLACE(REPLACE(s, 'è', 'e'), 'é', 'e')
pour é, è, ç tu aurais REPLACE(REPLACE(REPLACE(s, 'ç', 'c'), 'è', 'e'), 'é', 'e')
etc ... je te laisse continuer
0
manio11 Messages postés 49 Date d'inscription   Statut Membre Dernière intervention   2
 
Merci pour ta réponse, ça marche.Je savais pas qu'il y avait la fonction REPLACE sur mysql.Mais s'il faut gérer tous les caractères, ça sera costaud hein !
Ces multiples sous-imbrications ne rendront pas l'exécution de la requête lente ?

je vais faire avec.merci bien
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fiu
 
re

oui, ça risque de fortement ralentir des sélections.

tu peux accélérer alors ton requêtage en ajoutant une colonne supplémentaire dans ta table : ton texte sans les accentuées. Ça te prendra très peu de temps au moment de l'insertion ou de la mise à jour, et ça te prendra un peu de place... mais ça sera ultra-rapide
0
manio11 Messages postés 49 Date d'inscription   Statut Membre Dernière intervention   2
 
hmm, ajouter une colonne risque compromettre les autres scripts utilisant cette tables.j'essayerai plutôt de créer une nouvelle table contenant uniquement cette colonne sans les accents.

merci pour ton aide.
0
manio11 Messages postés 49 Date d'inscription   Statut Membre Dernière intervention   2
 
j'ai un problème : au niveau de la base de donnée en ligne, lorsque je fais REPLACE(nom, 'e', 'a') , ça marche bien.mais pas le REPLACE(nom, 'é', 'e').En local pourtant tout marche.est ce un problème d'encodage ?
0
manio11 Messages postés 49 Date d'inscription   Statut Membre Dernière intervention   2
 
ok, c'est bon.j'ai géré ce problème en changeant l'encodage en ajoutant ceci juste avant la requette :

SET NAMES UTF8;
0