Maison > base de données > tutoriel mysql > Pourquoi l'opérateur LIKE de MySQL est-il sensible à la casse lors de l'utilisation d'une chaîne binaire ?

Pourquoi l'opérateur LIKE de MySQL est-il sensible à la casse lors de l'utilisation d'une chaîne binaire ?

Barbara Streisand
Libérer: 2024-11-07 19:00:03
original
599 Les gens l'ont consulté

Why is MySQL's LIKE Operator Case Sensitive When Using a Binary String?

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%';
Copier après la connexion

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;
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal