Ron*_*adi 2 sql postgresql sql-order-by
我在postgres中有一个排序问题,列中包含版本等值.版本是字符变化的,其值如下(未排序).
1.2
1.3
1.10.1
1.9
Run Code Online (Sandbox Code Playgroud)
我如何按自然顺序排序,以便在我发出SELECT version FROM TABLE_A ORDER BY version DESC它时会给我
1.10.1
1.9
1.3
1.2
Run Code Online (Sandbox Code Playgroud)
代替
1.9
1.3
1.2
1.10.1
Run Code Online (Sandbox Code Playgroud)
Postgres允许您按数组排序 - 这基本上是版本号所代表的.因此,您可以使用以下语法:
order by string_to_array(version, '.')::int[] desc
Run Code Online (Sandbox Code Playgroud)
这是一个完整的例子:
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;
Run Code Online (Sandbox Code Playgroud)
甚至是演示.