我的表中有这些值
id | NAME
1 | 20 MEGA
2 | 30 MEGA
3 | 10 MEGA
4 | 300 MEGA
5 | 100 MEGA
6 | 25 MEGA
我想要的是什么:
id | NAME
3 | 10 MEGA
1 | 20 MEGA
6 | 25 MEGA
2 | 30 MEGA
5 | 100 MEGA
4 | 300 MEGA
我尝试了这个查询:
从table_name中选择* ORDER BY“name”ASC
但返回
3 10 MEGA
5 100 MEGA
1 20 MEGA
6 25 MEGA
2 30 MEGA
4 300 MEGA
我该怎么做?
答案 0 :(得分:1)
您应该能够通过将"name"
列中的数字视为int
来对其进行排序。为此,您需要确保首先使用regexp_replace删除任何非数字。
ORDER BY regexp_replace("name", '\D', '', 'g')::int ASC
您可以更进一步,将空值转换为0
或NULL
。