我在 MySQL db 表中有一些不同语言的国家名称,表可以支持 utf8。但SELECT * FROM countries ORDER BY 'name_czech'
总是按英文字母顺序排序
我的问题是我们如何按外语字段对记录进行排序?
也许您想使用反引号而不是单引号
SELECT *
FROM countries
ORDER BY `name_czech`
我不完全理解这个问题,或者你想要实现什么,但我可以通过你提供的样本猜测,除了默认的 mysql 排序之外没有任何排序发生。为了能够按列排序,您需要使用反引号 (`) 字符。在某些情况下,也允许使用 " 字符,尽管我怀疑这就是您所需要的。
回到排序问题,如果列的名称意味着什么,那么我猜这些是捷克语的名称。列有什么排序规则很重要。如果是 utf8 捷克语排序规则,则排序将根据该排序规则进行。如果没有,您始终可以强制使用不同于您为列定义的排序规则,使用ORDER BY name_czech COLLATE utf8_czech_ci
该排序规则将为相应的排序规则应用排序。如果该列是 utf8,你应该没有更多的惊喜。
基本上,如果不是适当的列(通过更改表),这又回到了更改列的排序规则,或者在查询期间更改排序规则。
明白了,我只是删除字段名称上的单引号
select * from countries order by name_czech
感谢所有的朋友。