7

我在 MySQL db 表中有一些不同语言的国家名称,表可以支持 utf8。但SELECT * FROM countries ORDER BY 'name_czech'总是按英文字母顺序排序

在此处输入图像描述

在此处输入图像描述

我的问题是我们如何按外语字段对记录进行排序?

4

3 回答 3

1

也许您想使用反引号而不是单引号

SELECT * 
FROM countries 
ORDER BY `name_czech`
于 2012-12-24T04:44:22.820 回答
1

我不完全理解这个问题,或者你想要实现什么,但我可以通过你提供的样本猜测,除了默认的 mysql 排序之外没有任何排序发生。为了能够按列排序,您需要使用反引号 (`) 字符。在某些情况下,也允许使用 " 字符,尽管我怀疑这就是您所需要的。

回到排序问题,如果列的名称意味着什么,那么我猜这些是捷克语的名称。列有什么排序规则很重要。如果是 utf8 捷克语排序规则,则排序将根据该排序规则进行。如果没有,您始终可以强制使用不同于您为列定义的排序规则,使用ORDER BY name_czech COLLATE utf8_czech_ci该排序规则将为相应的排序规则应用排序。如果该列是 utf8,你应该没有更多的惊喜。

基本上,如果不是适当的列(通过更改表),这又回到了更改列的排序规则,或者在查询期间更改排序规则。

于 2012-12-24T15:24:59.373 回答
0

明白了,我只是删除字段名称上的单引号

select * from countries order by name_czech

感谢所有的朋友。

于 2012-12-24T05:02:58.210 回答