小编典典

Postgres自然顺序

sql

我在postgres中有一个排序问题,其中包含诸如版本之类的值。版本是字符变化的,其值如下所示(无序)。

1.2
1.3
1.10.1
1.9

我如何按照自然顺序排序,这样当我发行SELECT version FROM TABLE_A ORDER BY version DESC时就会给我

1.10.1
1.9
1.3
1.2

代替

1.9
1.3
1.2
1.10.1

阅读 172

收藏
2021-04-07

共1个答案

小编典典

Postgres允许您按数组排序-本质上就是版本号所代表的含义。因此,您可以使用以下语法:

order by string_to_array(version, '.')::int[] desc

这是一个完整的示例:

select *
from (values ('1'), ('2.1'), ('1.2.3'), ('1.10.6'), ('1.9.4')) v(version)
order by string_to_array(version, '.')::int[] desc;

甚至是示威

2021-04-07