sql >> Base de Datos >  >> RDS >> Mysql

Búsqueda sensible a mayúsculas y minúsculas de MYSQL para el campo utf8_bin

Una cadena en MySQL tiene un conjunto de caracteres y una intercalación . Utf8 es el conjunto de caracteres y utf8_bin es una de sus colaciones. Para comparar su literal de cadena con una columna utf8, conviértalo a utf8 prefijándolo con la notación _charset:

_utf8 'Something'

Ahora, una intercalación solo es válida para algunos juegos de caracteres. sensible a mayúsculas y minúsculas la intercalación para utf8 parece ser utf8_bin, que puede especificar como:

_utf8 'Something' collate utf8_bin

Con estas conversiones, la consulta debería funcionar:

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

El prefijo _charset funciona con literales de cadena. Para cambiar el conjunto de caracteres de un campo, existe CONVERTIR... USANDO. Esto es útil cuando desea convertir el campo pageTitle a otro juego de caracteres, como en:

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

Para ver el carácter y la intercalación de una columna llamada 'col' en una tabla llamada 'TAB', intente:

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

Puede encontrar una lista de todos los juegos de caracteres y colaciones en:

show character set
show collation

Y todas las intercalaciones válidas para utf8 se pueden encontrar con:

show collation where charset = 'utf8'