我的表中有一列是代码。它们的格式为
AAA-XXXX-YYY
where
AAA
是按字母顺序排列的XXX
是数字YYY
是数字
我想对我的 default_scope 使用字母排序AAA
,然后是数字排序XXXX
,然后是数字排序,YYY
所以当我索引它们时,它们会像这样排序。
如果我对列进行字母数字排序,我将得到以下结果:
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 时,它们默认以这种方式排序。
谢谢你的帮助!