我正在尝试对ActiveRecord查询进行字母排序,不区分大小写,但字母优先于数字。
所以这:
[
93124, my town,
springfield,
hooverville,
10075, upper east side,
Austin, TX
]
变成:
[
Austin, TX,
hooverville,
springfield,
10075, upper east side,
93124, my town
]
这真让我难以理解。
您可以将的substring
方法与postgresql
一起使用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"]
希望这会有所帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句