在外语字段上使用 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 子句的主要内容,如果未能解决你的问题,请参考以下文章