在外语字段上使用ORDER BY子句

时间:2012-12-24 04:41:30

标签: mysql sql select

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

enter image description here

enter image description here

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

3 个答案:

答案 0 :(得分:1)

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

SELECT * 
FROM countries 
ORDER BY `name_czech`

答案 1 :(得分:1)

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

回到排序问题,如果列的名称意味着什么,那么我猜这些是捷克语中的名字。这个列的排序规则很重要。如果是utf8捷克整理,那么将根据该分类进行分类。如果没有,您可以使用ORDER BY name_czech COLLATE utf8_czech_ci强制执行除为您为列定义的排序之外的排序规则,这将对相应排序规则应用排序。如果列是utf8,你应该没有更多的惊喜。

基本上,如果不是合适的列(通过alter table),则会返回更改列的排序规则,或者在查询期间更改排序规则。

答案 2 :(得分:0)

得到它我只删除字段名称上的单引号

select * from countries order by name_czech

感谢所有朋友。