2010-08-17 8 views
5

He notado un problema con los caracteres "no ingleses" (polaco) que usan MySQL.Palabras de MySQL y polaco

consulta "select 'ABCDE' = 'ABCDE'" devuelve "1" y las cadenas no son iguales ...

podría ayudarme? :) ¡¡¡Gracias!!!

Respuesta

9

Para utf8_general_ci son iguales (a excepción de ³, que no se considera un error de MySQL), y desde 5.6 también se puede usar utf8_unicode_520_ci que maneja correctamente todos los caracteres polacos. Utilice utf8_polish_ci para tratar los caracteres acentuados y sin acentos como diferentes.

select 'abcde'='ąbćdę' COLLATE utf8_polish_ci 
>> 0 

demostración de 'no es un error'

select 'abcde'='ąbćdę' COLLATE utf8_general_ci 
>> 1 

select 'abcdel'='ąbćdęł' COLLATE utf8_general_ci 
>> 0 

Ver el informe de error aquí: http://bugs.mysql.com/bug.php?id=9604

+2

Vale la pena señalar que en MySQL 5.6 puede usar la "utf8_unicode_520_ci" colllation que maneja el ł caso de la misma manera que utf8_general_ci lo hace con otros caracteres polacos. – kars7e

+0

Gracias @bigfun. Agregó esta información a la respuesta – Mchl

-3

Puede reemplazar L para L y L a l en consulta MySQL, así:

SELECT REPLACE(REPLACE('abcdel', 'Ł', 'L'), 'ł', 'l') = REPLACE(REPLACE('ąbćdęł', 'Ł', 'L'), 'ł', 'l') COLLATE utf8_general_ci 
>> 1 

y desde ahora todas las letras diacríticas son equivalentes a sus equivalentes no diacríticos.

Cuestiones relacionadas