使用MySQL排序非英文名称
我想排序包含希腊字符的表。表格的相应英文版本正在排序(ASC
和DESC
)就好了,每次点击表格的标题。使用MySQL排序非英文名称
我在希腊论坛上搜索过,唯一的解决方案是使用ORDER BY BINARY
。事实上,很多人都说使用二元顺序解决了他们的问题。不幸的是,它并没有在我的情况下。我知道,像德语这样的语言存在同样的问题,在这种语言中,变音符号的使用会扰乱顺序,并且通常会在具有特殊字符的语言中使用。如果有人有任何想法如何克服这个问题,我将不胜感激。
根据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 |
+----+
| Α |
| Β |
| Γ |
| Δ |
| Ε |
| Ζ |
+----+
我正在使用MySQL 5.1.53。你建议我应该升级到最新的? – user926652 2012-01-03 20:30:46
@ user926652,它不适用于MySQL 5.1.x,但它在MySQL 6上有效 - 这就是我所能说的。无论你应该升级,我不能说。它似乎处于发展的早期阶段,所以它可能不是一个好主意 - 但它会解决这个问题。 – kba 2012-01-03 20:34:27
从我从希伯来知道,非拉丁语言由他们的ASCII码排序(或Unicode)的指数,一般应与喜欢的语言工作希腊语。所以我不知道问题出在哪里。你能关注你的问题吗? – 2012-01-03 20:07:40
我已将[tag:PHP]标签更改为[tag:MySQL],因为这与PHP无关。另外,你能举一个排序不好的例子吗?只有几个名字。什么[charset](http://dev.mysql.com/doc/refman/5.0/en/charset.html)是你的表格? – kba 2012-01-03 20:09:36
问题是我没有得到正确的顺序。例如,以A开头的单词,即使在希腊语中也是字母表的第一个字母,它们几乎出现在我桌子的尽头。我不是PHP的专家,现在我想如果表的排序是问题? – user926652 2012-01-03 20:12:21