【发布时间】:2012-12-17 14:42:48
【问题描述】:
我的表格中有一个列是代码。它们的格式为
AAA-XXXX-YYY在哪里
-
AAA按字母顺序排列 -
XXX是数字 -
YYY是数字
我想在AAA 上使用字母排序,然后在XXXX 上使用数字排序,然后在YYY 上使用数字排序作为我的default_scope,所以当我索引它们时,它们会像这样排序。
如果我对列进行字母数字排序,我会得到以下结果:
AAA-1000-1
AAA-1000-111
AAA-1000-2
BB-1000-12
BBB-1000-1
BCA-1000-1
C-1000-12
但 111 使用数字排序大于 2。
编辑:AAA 的长度不固定。所以它可能是“AA”或“BBBB”或“CCC”。已经提到使用 SQL SUBSTRING,但位置并不总是设置。
EDIT2:我可能应该提到这种排序需要在 default_scope 上完成,所以当我访问 Object.all 时,它们默认以这种方式排序。
感谢您的帮助!
【问题讨论】:
-
stackoverflow.com/questions/4785424/… 用于 MySQL 中基于子字符串的表排序
标签: ruby-on-rails default-scope