2012-03-01 23 views
3

編輯:如果沒有這樣的排序規則存在,我可以解決它,如果MySQL有一個功能,將字符串轉換爲ASCII等價物,例如FUNC('Være')='Vaere' - 可能有幾個這樣的功能,每個字母一個,這將是一個麻煩,但如果有效的話可以接受。哪個MySQL歸類比較例如é和e平等嗎?


我需要一個MySQL5排序規則,它會比較重音字符作爲等效字符,而不考慮重音。例如「fêter」應該被認爲等於「feter」和「EL」應匹配「EL」

在理想情況下,這將不被限制爲單字符替換,例如「ForVæreSom ManBør」應該被認爲等同於「For Vaere Som Man Bor」。 WHERE name LIKE '%ere%'也應該匹配它。

我看到有西班牙/拋光/等歸類,但我需要一個整理覆蓋所有拉丁般的字母(不阿拉伯語或亞洲的人等)。這些字符串存儲爲UTF-8。

我應該使用哪種整理?

+1

如果區分大小寫不區分大小寫,可以嗎? – 2012-03-01 15:15:06

+0

不區分大小寫,至少現在。理想情況下,我可以在運行時選擇它。 – spraff 2012-03-01 16:06:12

+0

我現在不能把答案放在一起(這是一個稍微複雜的話題,我每次都忘記了怪癖和注意事項),但對於任何願意挖掘的人來說,答案都在這裏:http://dev.mysql.com/ DOC/refman/5.5/EN /字符集支持unicode sets.html – 2012-03-01 16:08:03

回答

1

既然你說你正在使用的UTF8字符集,回答你原來的問題是「所有的人除了utf8_bin」。

在所有這些排序規則,你會發現,「E」 =「E」的。

不過,我不知道任何的排序規則,其中「æ」 =「AE」或「O」 =「O」。

utf8_czech_ci 
utf8_danish_ci 
utf8_esperanto_ci 
utf8_estonian_ci 
utf8_general_ci 
utf8_hungarian_ci 
utf8_icelandic_ci 
utf8_latvian_ci 
utf8_lithuanian_ci 
utf8_persian_ci 
utf8_polish_ci 
utf8_roman_ci 
utf8_romanian_ci 
utf8_sinhala_ci 
utf8_slovak_ci 
utf8_slovenian_ci 
utf8_spanish_ci 
utf8_spanish2_ci 
utf8_swedish_ci 
utf8_turkish_ci 
utf8_unicode_ci