【发布时间】:2016-04-04 20:38:42
【问题描述】:
我有一个 Rails 4.2+ 和 Postgres 9.4 项目,我需要更改 Postgres 在查询中排序项目的方式。默认设置似乎忽略了空格,我需要一个将空格考虑在内的策略。在 psql 中运行\l 后,我看到数据库将Collate 设置为en_US.UTF-8 和Ctype 设置为en_US.UTF-8。
于 2015 年 12 月 30 日下午 4:14 更新
我有以下活动,其名称列具有以下名称:
Code1A East
Code1A West
Code1 AEast
Code1 AWest
当我在 Rails 中执行以下查询时
Activity.order(name: :asc)
我希望按以下顺序返回活动列表。
Code1 AEast
Code1 AWest
Code1A East
Code1A West
甚至可能
Code1A East
Code1A West
Code1 AEast
Code1 AWest
我得到了
Code1A East
Code1 AEast
Code1A West
Code1 AWest
它似乎忽略了名称中的空格。我在下面的评论中指出,通过将以下内容添加到 database.yml,我能够让 Rails 应用程序创建具有特定排序规则的数据库
development:
...other keys...
encoding: utf8
collation: sv_SE.UTF-8
ctype: sv_SE.UTF-8
template: template0
但我不知道哪种排序规则设置会选择“更好”的排序顺序。
【问题讨论】:
-
排序是 PostgreSQL 特定的吗? This SO 主题可能会有所帮助。每次运行查询时,您都可以为每个模型指定默认顺序。
-
这是一个我想在数据库级别纠正的问题。
-
请发布一个与您的期望不符的查询结果示例。默认情况下排序不会忽略空格。
标签: ruby-on-rails postgresql ruby-on-rails-4