Sensibilité à la casse avec LIKE dans MySQL
Lors de l'exécution d'une recherche LIKE dans MySQL à l'aide de la requête "SELECT concat_ws(title,description) comme concaténé AYANT concaténé LIKE '%SearchTerm%';", on peut remarquer que les recherches sont sensibles à la casse, même si la table est codée à l'aide du classement utf8_general_ci et du moteur de stockage MyISAM.
La raison de ce comportement est que l'opérateur LIKE effectue des comparaisons sensibles à la casse lorsque l'un des opérandes est une chaîne binaire. Dans ce cas, le champ « concaténé » est une chaîne binaire, ce qui rend la recherche sensible à la casse.
Pour résoudre ce problème et rendre la recherche insensible à la casse, il est recommandé d'utiliser le mot-clé BINARY avec le LIKE opérateur :
SELECT .... FROM .... WHERE `concatenated` LIKE BINARY '%SearchTerm%';
Cela garantit que la comparaison de chaînes est effectuée de manière binaire, en ignorant les différences de casse.
Alternativement, le mot-clé COLLATE peut être utilisé avec le classement utf8_bin pour créer le recherche insensible à la casse :
SELECT .... FROM .... WHERE `concatenated` like '%SearchTerm%' COLLATE utf8_bin;
Ces deux méthodes modifient efficacement le comportement de recherche, le rendant insensible à la casse tout en préservant les avantages en termes de performances du classement utf8_general_ci.
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!