Maison >base de données >tutoriel mysql >Pourquoi la recherche insensible à la casse dans MySQL avec l'opérateur LIKE et l'encodage utf8_general_ci est-elle sensible à la casse ?
Recherche insensible à la casse dans MySQL
Cet article explore le problème où les requêtes MySQL utilisent l'opérateur LIKE dans les tables avec l'encodage utf8_general_ci et le moteur de stockage MyISAM entraînent des recherches sensibles à la casse.
Pour résoudre ce problème, deux solutions sont recommandées :
1. Utilisation de chaînes binaires :
En ajoutant le mot-clé BINARY à l'opérateur LIKE, une recherche insensible à la casse peut être réalisée :
SELECT .... FROM .... WHERE `concatenated` LIKE BINARY '%SearchTerm%';
Cette approche fonctionne mieux que les autres car elle force la chaîne binaire comparaison, le rendant plus efficace.
2. Utilisation de COLLATE :
Alternativement, le mot-clé COLLATE peut être utilisé pour spécifier une règle de classement spécifique :
SELECT .... FROM .... WHERE `concatenated` like '%SearchTerm%' COLLATE utf8_bin;
En utilisant le classement utf8_bin, une comparaison insensible à la casse est appliquée. Bien que cette méthode offre plus de flexibilité, elle peut avoir un léger impact sur les performances par rapport à l'approche des chaînes binaires.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!