Mysql
 sql >> Base de données >  >> RDS >> Mysql

Recherche sensible à la casse MYSQL pour le champ utf8_bin

Une chaîne dans MySQL a un jeu de caractères et un classement . Utf8 est le jeu de caractères et utf8_bin est l'un de ses classements. Pour comparer votre littéral de chaîne à une colonne utf8, convertissez-le en utf8 en le préfixant avec la notation _charset :

_utf8 'Something'

Désormais, une collation n'est valide que pour certains jeux de caractères. Le sensible à la casse la collation pour utf8 semble être utf8_bin, que vous pouvez spécifier comme :

_utf8 'Something' collate utf8_bin

Avec ces conversions, la requête devrait fonctionner :

select * from page where pageTitle = _utf8 'Something' collate utf8_bin

Le préfixe _charset fonctionne avec les littéraux de chaîne. Pour changer le jeu de caractères d'un champ, il y a CONVERT ... USING. Ceci est utile lorsque vous souhaitez convertir le champ pageTitle en un autre jeu de caractères, comme dans :

select * from page 
where convert(pageTitle using latin1) collate latin1_general_cs = 'Something'

Pour voir le caractère et le classement d'une colonne nommée 'col' dans une table appelée 'TAB', essayez :

select distinct collation(col), charset(col) from TAB

Une liste de tous les jeux de caractères et classements peut être trouvée avec :

show character set
show collation

Et tous les classements valides pour utf8 peuvent être trouvés avec :

show collation where charset = 'utf8'