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

Posted

技术标签:

【中文标题】在外语字段上使用 ORDER BY 子句【英文标题】:Use ORDER BY clause on foreign language field 【发布时间】:2012-12-24 04:41:30 【问题描述】:

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

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

【问题讨论】:

你能提供样本记录吗? 也许你想使用反引号而不是单引号。 ORDER BY name_czech 怎么样? @ArashMilani 问题就在上面:My question is How could we sort records by foreign language field? 【参考方案1】:

也许你想用反引号代替单引号

SELECT * 
FROM countries 
ORDER BY `name_czech`

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

【参考方案3】:

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

select * from countries order by name_czech

感谢所有朋友。

【讨论】:

以上是关于在外语字段上使用 ORDER BY 子句的主要内容,如果未能解决你的问题,请参考以下文章

在 django slug 字段中使用外语不起作用

django 1.9 slug 字段不适用于外语

外语类保送上财还是武大

求外语教育与研究出版社九年级上英语module1单词表

Mysql中ORDER BY 排序怎么使用?指定顺序和多字段排列

oracle中group by 和order by 同时用