Problème du jour :
Vous avez une table en latin1_general_ci
(ou un interclassement assez proche), et vous souhaitez effectuer une recherche sur le terme "cinéma" avec un LIKE
.
Un problème va se poser si l'utilisateur saisit "cinema" et non "cinéma"... votre requête ne retournera aucun résultat...
SELECT * FROM `table` WHERE `texte` LIKE '%cinema%' ;
Une partie de la solution se trouve dans l'interclassement, si vous effectuez cette même requête LIKE
dans une table en utf8_general_ci
, le résultat retournera tous les "cinéma" !
Certains diront sûrement qu'il suffit de changer l'interclassement et le problème sera réglé mais parfois vous n'avez pas cette possibilité pour diverses raisons...
Voici une solution qui je l'espère vous plaira, il "suffit" de traiter le texte reçu en latin1
ISO-8859-1
dans la requête avec un CONVERT(_utf8 '%...%' USING utf8) COLLATE utf8_general_ci
:
SELECT * FROM `table` WHERE `texte` LIKE CONVERT(_utf8 '%cinema%' USING utf8) COLLATE utf8_general_ci ;
En promo : Comment réinitialiser le numéro identifiant AUTO_INCREMENT
dans une table ?
ALTER TABLE `table` AUTO_INCREMENT = 1 ;