gpt4 book ai didi

ruby-on-rails - Postgres/ActiveRecord 按字母排序然后按数字排序?

转载 作者:行者123 更新时间:2023-11-29 12:26:11 25 4
gpt4 key购买 nike

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

所以这样:

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

变成:

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

这真的让我难以理解。

最佳答案

你可以使用 postgresqlsubstring 方法和一个 pattern

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

@locations = Location.select("name").order("SUBSTRING(name, '^[A-Za-z].*'), SUBSTRING(name, '^[0-9]+')::INTEGER")    

这将首先按字符然后按数字对列 name 进行排序。

@locations.map(&:name)

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

希望这会有所帮助。

关于ruby-on-rails - Postgres/ActiveRecord 按字母排序然后按数字排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35758864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com