Postgres / ActiveRecord按字母和数字排序?

时间:2016-03-02 21:53:41

标签: ruby-on-rails postgresql activerecord

我尝试按字母顺序排序ActiveRecord查询,不区分大小写,但字母优先于数字。

所以这个:

[
  93124, my town,
  springfield,
  hooverville,
  10075, upper east side,
  Austin, TX
]

变为:

[
  Austin, TX,
  hooverville,
  springfield,
  10075, upper east side,
  93124, my town
]

这真的让我不知所措。

1 个答案:

答案 0 :(得分:0)

您可以使用substring的{​​{1}}方法和postgresql

假设您的pattern模型带有Location列。列name具有上述值。让我们订购它们。

name

这将首先按字符排序@locations = Location.select("name").order("SUBSTRING(name, '^[A-Za-z].*'), SUBSTRING(name, '^[0-9]+')::INTEGER") 列,然后按数字排序。

name

希望这会有所帮助。