我想在我的MySQL查詢中自定義按字母排序的順序。 馬耳他語使用標準的拉丁字母與人物一起:Ç,摹,ħ和ż。我使用utf8_bin
排序規則,因爲ċ與c(依此類推)不相同。 這樣做,當我使用ORDER BY
,字母的順序處理結果:MySQL自定義字母順序
a b c d e f g h i j k l m n o p q r s t u v w x y z ċ ġ ħ ż
但是我要求他們有這樣的順序:
a b ċ c d e f ġ g h ħ i j k l m n o p q r s t u v w x y ż z
這意味着,按升序排列,「 「abċ」應該在之前「abz」,但目前它來之後,因爲它只是比較字符的二進制值。有沒有辦法在MySQL中實現這種自定義排序?
我見過像this這樣的解決方案,它使用ORDER BY FIELD(name, 'a', 'b', 'ċ', ...)
,但這似乎不適用於這種情況。
我也嘗試添加排序功能,如下所示:ORDER BY radicals COLLATE utf8_unicode_ci
,但這基本上將重音字符視爲相同。所以,我會得到有序的字符串,如「ACD」,「王牌」,「ACF」,但也是錯誤的(應該是「ACD」,「ACF」,「王牌 「)。
我的備用計劃當然是在PHP中進行排序,但如果我可以將排序保留到MySQL本身,它將會更加整潔。有任何想法嗎?
我沒有考慮過,如果不重新編譯MySQL(這絕對不是一個選項),添加排序規則是可能的。感謝您的鏈接,我會確實嘗試這樣做。 –