Mysql自然排序与特殊字符

时间:2016-05-13 21:41:56

标签: php mysql yii

早上好,这是我的第一个主题,所以感谢所有得到的帮助。

我正在使用MySQL数据库的Yii应用程序。此数据库有一个国家/地区表,其中包含名为name的列,其中包含utf8_general_ci排序规则。此列由具有特殊字符的数据填充,如Åland群岛

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

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

如果您想要与特定语言对应的排序顺序,则需要选择与该语言对应的排序规则,这里可能是utf8_swedish_ci,您可以在其中看到ä和{{1在字母表的末尾。

这是因为不同语言的排序顺序不同,utf8_general_ci不能选择一个而不能选择另一个。例如,在utf8_swedish_ci中,åÅ之前是,而在utf8_icelandic_ci中,Ä {{1}之后是 }。