使用MySQL排序非英文名称

问题描述:

我想排序包含希腊字符的表。表格的相应英文版本正在排序(ASCDESC)就好了,每次点击表格的标题。使用MySQL排序非英文名称

我在希腊论坛上搜索过,唯一的解决方案是使用ORDER BY BINARY。事实上,很多人都说使用二元顺序解决了他们的问题。不幸的是,它并没有在我的情况下。我知道,像德语这样的语言存在同样的问题,在这种语言中,变音符号的使用会扰乱顺序,并且通常会在具有特殊字符的语言中使用。如果有人有任何想法如何克服这个问题,我将不胜感激。

+1

从我从希伯来知道,非拉丁语言由他们的ASCII码排序(或Unicode)的指数,一般应与喜欢的语言工作希腊语。所以我不知道问题出在哪里。你能关注你的问题吗? – 2012-01-03 20:07:40

+0

我已将[tag:PHP]标签更改为[tag:MySQL],因为这与PHP无关。另外,你能举一个排序不好的例子吗?只有几个名字。什么[charset](http://dev.mysql.com/doc/refman/5.0/en/charset.html)是你的表格? – kba 2012-01-03 20:09:36

+0

问题是我没有得到正确的顺序。例如,以A开头的单词,即使在希腊语中也是字母表的第一个字母,它们几乎出现在我桌子的尽头。我不是PHP的专家,现在我想如果表的排序是问题? – user926652 2012-01-03 20:12:21

根据a thread on forums.mysql.com,在MySQL 6.0中,如果表格的字符集设置为utf8_general_ci,则可以对希腊语名称进行排序。

create table t (s1 char(1) character set utf8 collate utf8_general_ci); 
insert into t values ('Α'),('Β'),('Γ'),('Δ'),('Ε'),('Ζ'); 
select * from t order by s1; 

以上应返回

+----+ 
| s1 | 
+----+ 
| Α | 
| Β | 
| Γ | 
| Δ | 
| Ε | 
| Ζ | 
+----+ 
+0

我正在使用MySQL 5.1.53。你建议我应该升级到最新的? – user926652 2012-01-03 20:30:46

+0

@ user926652,它不适用于MySQL 5.1.x,但它在MySQL 6上有效 - 这就是我所能说的。无论你应该升级,我不能说。它似乎处于发展的早期阶段,所以它可能不是一个好主意 - 但它会解决这个问题。 – kba 2012-01-03 20:34:27