
Envoyé par
Artemus24
Salut ddami1 .
Ce que vous essayer de faire, c'est ni plus ni moins qu'une usine à gaz.
Une solution basique qui me vient en lisant votre premier message serait de ne pas ajouter des tirets dans la partie gauche de l'égalité, mais de remplacer vos tirets pas des espaces dans la partie droite de l'égalité.
Autrement dit, c'est en PHP que vous devez faire cette substitution.
Si vous utilisez une fonction sur une colonne de la table et que celle-ci est indexée, votre recherche va se dégrader car MySql ne tiendra plus compte de cet indexe.
Donc la solution que vous proposez n'est pas la bonne.
Pour ne pas dégrader les performances de MySql, ce qui est vivement conseillé de faire c'est :
--> where nom_de_colonne = 'chaine';
ou
--> where nom_de_colonne like 'chaine%';
Il existe des fonctions comme 'lower' pour tout mettre en minuscule, 'upper' pour tout mettre en majuscule, 'replace' pour substituer une chaîne par une autre ...
Mais ce n'est pas la solution car c'est trop long à écrire, pas adapté à ce que vous voulez faire, et vous aurez des problèmes de performances.
Le mieux est de procéder à une convention et à s'y tenir dans MySql, au moment du remplissage de vos tables dans MySql.
Si vous ne désirez pas d'accents, et bien n'en mettez pas. Idem pour les espaces et les majuscules.
Ainsi de part et d'autre de l'égalité, lors de votre traitement de recherche, vous aurez la même convention et votre problème sera résolu.
En fait, ce que vous faites, c'est prendre votre problème à l'envers.
Vous stockez des chaînes de caractères directement dans votre table sans vous posez de questions.
Puis quand le traitement arrive, là, vous constatez que vous êtes dans une usine à gaz sans solution.
C'est au moment de la conception de votre base que vous auriez dû réfléchir sur une possible solution.
Comment je vous l'indique, vous devez proposer une convention au moment du stockage de vos chaîne de caractères dans votre table.
@+
Partager