【问题标题】:Use ORDER BY clause on foreign language field在外语字段上使用 ORDER BY 子句
【发布时间】: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?

标签: mysql sql select


【解决方案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
      

      感谢所有朋友。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-10
        • 1970-01-01
        • 1970-01-01
        • 2021-01-21
        • 1970-01-01
        相关资源
        最近更新 更多