2010-08-17 114 views
5

我注意到使用MySQL的「非英語」(波蘭語)字符的問題。MySQL和波蘭語單詞

查詢「選擇‘ABCDE’=‘ABCDE’」返回「1」和字符串不等於...

你能幫助我嗎? :) 謝謝!!!

回答

9

對於utf8_general_ci他們是平等的(除了ł,這不被認爲是MySQL的錯誤),並且自5.6以來,您還可以使用utf8_unicode_520_ci來正確處理所有波蘭語字符。使用utf8_polish_ci將重音和非重音字符視爲不同。

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

'不是一個bug'

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

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

見bug報告這裏的演示:http://bugs.mysql.com/bug.php?id=9604

+2

值得注意的是,在MySQL 5.6中,您可以使用「utf8_unicode_520_ci」colllation來處理這種情況,就像utf8_general_ci與其他波蘭語字符一樣。 – kars7e 2014-12-10 01:02:35

+0

謝謝@bigfun。將此信息添加到答案中 – Mchl 2014-12-10 14:06:48

-3

可以在MySQL查詢替換L到L和L L時,像這樣:

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

並且從現在開始,所有的變音符號等於它們的非變音符號等同物。