2017-05-25 32 views
-1

在MySQL 5.5中,搜索結果使用utf8_general_ci歸類和utf8字符集服務器對德文變音符區分大小寫。我在我的2個值中數據庫表說öder和Öder。當我運行一個查詢來使用關鍵字'Öder'搜索字符串時,只有Öder被檢索作爲搜索結果,並且以öie'örder'開頭的值不被檢索。如果我更改了字符集服務器到MySQL服務器的my.cnf文件中的latin1,並整理到latin1_general_ci(相同的字符集和排序規則更改爲latin1,我也爲相應的數據庫和表格),它工作正常,即兩個值都作爲搜索結果檢索。但是,有沒有一種方法可以使用utf8作爲字符集服務器來實現不區分大小寫的搜索德語變音符號?面對這個問題, g othe德國變音,例如ü,Ü,ä,Ä。使用utf8_general_ci歸類和utf8字符集服務器搜索結果是區分大小寫的德語變音符號

+0

沒有整理會處理''örder'='öder' - 是一個錯字嗎?此外,請說明您是否希望'oöder'匹配'oder' - 這是重音剝離,與個案摺疊無關。 –

+0

如果用Ö搜索,則以ö開頭的單詞不會被檢索到。我不關心訂單是否匹配。我只處理Öder和örder。 –

回答

0

使用MySQL命令行工具來測試的東西:

mysql> SELECT 'Ö' = 'ö' COLLATE utf8_general_ci; 
+-------------------------------------+ 
| 'Ö' = 'ö' COLLATE utf8_general_ci | 
+-------------------------------------+ 
|         1 | 
+-------------------------------------+ 

1意味着true; 0表示false

任何utf8_..._ci排序規則都會將一串重音/不重音的大寫/小寫字符視爲相等。例如,utf8mb4_german2_ci表示這些值相等:O=o=º=Ò=Ó=Ô=Õ=ò=ó=ô=õ並在oe=Ö=ö=Œ=œ之前排序。

Here是大多數字母在大多數utf8排序規則中的排名。

對於大多數用法,_general_ci不如_unicode_ci,它不如_unicode_520_ci,它將被MySQL 8.0中的Unicode 9.0標準取代。

我認爲german2是針對「電話簿」整理。但也許不是。在8.0中,utf8mb4_german2_ci整理D=d=Ď=ď < Dž=dz=dž < Ð=ð。但是utf8mb4_de_pb_0900_ai_ciD=d=Ð=ð=Ď=ď < Dž=dz=dž。更多詳情here

相關問題