Cela a déjà été demandé sur ce site mais je n’ai pas trouvé de réponse suffisante. Si je fais une requête comme:
Select Seller from Table where Location = 'San Jose'
Comment puis-je le faire retourner uniquement aux vendeurs ayant l'emplacement "San Jose" au lieu de "san jose" ou autre chose?
Les requêtes MySQL ne sont pas sensibles à la casse par défaut. Vous trouverez ci-dessous une requête simple qui recherche une "valeur". Cependant, il retournera 'VALUE', 'value', 'VaLuE', etc…
SELECT * FROM `table` WHERE `column` = 'value'
La bonne nouvelle est que si vous devez faire une requête sensible à la casse, il est très facile de le faire en utilisant l'opérateur BINARY
, qui force une comparaison octet par octet:
SELECT * FROM `table` WHERE BINARY `column` = 'value'
Pour améliorer l'excellente réponse de James:
Mieux vaut mettre BINARY
devant la constante:
SELECT * FROM `table` WHERE `column` = BINARY 'value'
Mettre BINARY
devant column
empêchera l’utilisation d’index sur cette colonne.
Bien que la réponse indiquée soit correcte, puis-je suggérer que si votre colonne doit contenir des chaînes sensibles à la casse, vous devez lire la documentation et modifier votre définition de table en conséquence.
Dans mon cas, cela revient à définir ma colonne comme suit:
`tag` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT ''
Ceci est à mon avis préférable pour ajuster vos requêtes.