用数字按字母顺序对列进行排序
Sorting Column alphabetically with numbers
我有 table 列 :name
。
我想按字母顺序 :name
排序。
使用Item.order(:name)
得到"item 14", "item 15", "item 16", "item 3", "item 4"
。但是我想要"item 3", "item 4", "item 14", "item 15", "item 16"
如何实现?
你试过了吗:
Item.order('CAST(name AS DECIMAL) ASC')
只是一个猜测,但可能有用...祝你好运!
这似乎有效
Item.order("LENGTH(name)", :name).pluck(:name)
你可以看看这个:MySQL 'Order By' - sorting alphanumeric correctly
感谢@razvans 的搜索方向。
我找到了解决方案 enter link description here
我有:
id | name
----+----------
2 | item 2
3 | item 12
1 | item 3
4 | item 17
5 | df38
6 | aaa
7 | a13v
8 | a13a
9 | item 00
(9 rows)
并使用此代码:
select name from table_name order by left(name, 1), substring(name, '\d+')::int NULLS FIRST, name;
我得到了:
name
----------
aaa
a13a
a13v
df38
item 00
item 2
item 3
item 12
item 17
(9 rows)
此解决方案在 ruby 上 rails:
Item.order("left(name, 1), substring(name, '\d+')::int NULLS FIRST, name").pluck(:name)
这就是我需要的!
我有 table 列 :name
。
我想按字母顺序 :name
排序。
使用Item.order(:name)
得到"item 14", "item 15", "item 16", "item 3", "item 4"
。但是我想要"item 3", "item 4", "item 14", "item 15", "item 16"
如何实现?
你试过了吗:
Item.order('CAST(name AS DECIMAL) ASC')
只是一个猜测,但可能有用...祝你好运!
这似乎有效
Item.order("LENGTH(name)", :name).pluck(:name)
你可以看看这个:MySQL 'Order By' - sorting alphanumeric correctly
感谢@razvans 的搜索方向。 我找到了解决方案 enter link description here
我有:
id | name
----+----------
2 | item 2
3 | item 12
1 | item 3
4 | item 17
5 | df38
6 | aaa
7 | a13v
8 | a13a
9 | item 00
(9 rows)
并使用此代码:
select name from table_name order by left(name, 1), substring(name, '\d+')::int NULLS FIRST, name;
我得到了:
name
----------
aaa
a13a
a13v
df38
item 00
item 2
item 3
item 12
item 17
(9 rows)
此解决方案在 ruby 上 rails:
Item.order("left(name, 1), substring(name, '\d+')::int NULLS FIRST, name").pluck(:name)
这就是我需要的!