2010-08-17 8 views
5

Ho notato un problema con i caratteri "non inglesi" (smalto) usando MySQL.Parole MySQL e polacco

query "selezionare 'ABCDE' = 'ABCDE'" restituisce "1" e le stringhe non sono uguale ...

mi può aiutare? :) grazie!!!

risposta

9

Per utf8_general_ci sono uguali (con l'eccezione di ł, che non è considerato un bug da MySQL), e dal 5.6 puoi anche usare utf8_unicode_520_ci che gestisce correttamente tutti i caratteri polacchi. Usa utf8_polish_ci per trattare i caratteri accentati e non accentati come diversi.

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

Demo di 'non un bug'

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

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

Vedere la segnalazione di bug qui: http://bugs.mysql.com/bug.php?id=9604

+2

Vale la pena notare che in MySQL 5.6 è possibile utilizzare colllation "utf8_unicode_520_ci", che gestisce il caso ³ allo stesso modo utf8_general_ci fa con altri personaggi polacchi. – kars7e

+0

Grazie a @bigfun. Aggiunta di queste informazioni alla risposta – Mchl

-3

È possibile sostituire L per L e L per l in query MySQL, in questo modo:

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

e da ora tutte le lettere diacritici uguale ai loro equivalenti non-diacritici.

Problemi correlati