Mysql带有特殊字符的自然排序


Mysql Natural sort with special characters

早上好,这是我的第一个主题,感谢大家的帮助。

我正在使用MySQL数据库开发Yii应用程序。该数据库有一个countries表,该表有一个名为name的列,其排序规则为utf8_general_ci。此列由具有特殊字符的数据填充,如奥兰群岛

使用Mysql常规排序,列名没有正确的排序行为,例如:

正确:
阿尔巴尼亚
奥兰群岛

实际:
奥兰群岛
阿尔巴尼亚

参考ASCII表,"Å"是197,而"A"是65。

我尝试使用许多Web解决方案(包括REGEXP),但没有成功。

在utf8_general_ci中,不同类别的a(a、a、à、ä等)的顺序没有区别:它们在排序上都是相等的,你可以在先例链接页中看到,它们都在字母A之后的白框中。

如果你想要一个对应于特定语言的排序顺序,你需要选择对应于该语言的排序规则,这里可能是utf8_swedish_ci,你可以看到äå位于字母表的末尾。

这是因为不同语言的排序顺序不同,utf8_general_ci不能选择其中一种而不选择另一种。例如,在utf8_swedish_ci中,ÅÄ之前是,而在utf8 _icelandic_ci中的ÅÄ之后是