2011-06-08 21 views
5

La clasificación de mi tabla es "utf8_general_ci". Si funciono con una consulta como: SELECT * FROM mitabla DONDE myfield = "foo"MySQL DB selecciona registros con y sin diéresis. por ejemplo: '.. donde algo = FÖÖ'

i obtener resultados donde: ... myfield = "foo" ... myfield = "foo"

es este es el valor predeterminado para "utf8_general_ci"? ¿Qué colación debo usar para obtener solo registros donde myfield = "FÖÖ"?

thnx de antemano

+1

posible duplicado de [MySQL trata a ÅÄÖ como AAO ?!] (http://stackoverflow.com/questions/2607130/mysql-treats-aao-as-aao) –

Respuesta

2

Una lista de las colaciones ofrecidos por MySQL para conjuntos de caracteres Unicode se puede encontrar aquí:

http://dev.mysql.com/doc/refman/5.0/en/charset-unicode-sets.html

Si quieres ir sin cuartel y requieren cadenas para ser absolutamente idéntico con el fin de probar igual, puede usar utf8_bin (la intercalación binaria). De lo contrario, es posible que tenga que experimentar con las diferentes intercalaciones que se ofrecen.

+0

thnx. utf8_bin resuelve el problema –

3
SELECT * FROM table WHERE some_field LIKE ('%ö%' COLLATE utf8_bin) 
+1

Al proporcionar el código que resuelve el problema, es mejor también dar al menos una breve explicación de cómo funciona para que la gente que lee no tenga que analizarlo mentalmente línea por línea para entender las diferencias. – Fluffeh

+1

la respuesta vino del Sr. satan, él no necesita explicar. – MilMike

+0

ERROR 1253 (42000): COLLATION 'utf8_bin' no es válido para el JUEGO DE CARACTERES 'utf8mb4' – donquixote

Cuestiones relacionadas