本文介绍了Postgres自然顺序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在postgres的一列中有一个排序问题,其中包含诸如version之类的值。
版本因字符而异,其值如下(无序)。

I have a sorting issue in postgres in a column with values such as version.Version is character varying, with values such as the following (un-ordered).

1.2
1.3
1.10.1
1.9

如何按自然顺序排序当我发布从TABLE_A ORDER BY版本DESC 选择版本时,它将给我

How do I sort in natural order such that when I issue SELECT version FROM TABLE_A ORDER BY version DESC it will give me

1.10.1
1.9
1.3
1.2

而不是

1.9
1.3
1.2
1.10.1


推荐答案

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

Postgres allow you to sort by arrays -- which is essentially what the version number represents. Hence, you can use this syntax:

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

下面是一个完整的示例:

Here is a full example:

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;

甚至是。

这篇关于Postgres自然顺序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-03 01:15