当前位置: 首页 > 面试题库 >

Postgres自然顺序

谭毅然
2023-03-14
问题内容

我在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

问题答案:

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;

甚至是示威。



 类似资料:
  • 我们从右到左都知道并爱/恨作文: 什么是自然/从左到右组合的“最标准”操作符(如在某种公共库中):

  • 假设表 和 都有一行,则查询 应该有两个行级锁(一个在 A 上,一个在 B 上)。是否有任何定义的顺序来获取锁?有没有办法要求表 b 中的锁在来自 a 的锁之前获得锁定(以避免与其他事务死锁)?

  • 问题内容: 我在mysql排序中寻找一些调整,我通常从表中选择记录,然后按Name(varchar)ASC排序记录, 但编号始终是第一位的 这是我的问题的一些示例( 注意。mysql首先用0-9排序记录 ) 我想要的是字母顺序,然后是数字 所需的输出 问题答案: 使用以下子句:

  • 但是,postgres似乎没有运行。 并且无法与命令行客户端连接。 据我所知,我已经尝试了在讨论这个问题的其他Stackoverflow线程上建议的所有修复。具体地说: null

  • 我在研究空间日期时遇到了一个问题。我有一个包含列的表:对象id及其坐标(纬度和经度,数据类型是几何体)。我需要按照从西北到东南方向的坐标对这些数据进行排序。我该怎么做?我想我当然需要使用“orderby”和索引。但是哪一个和如何?

  • 问题内容: 我有一些文件需要按名称排序,但是不幸的是,我无法使用常规排序,因为我也想对字符串中的数字进行排序,因此我进行了一些研究,发现所寻找的东西叫做。 我尝试了此处给出的解决方案,并且效果很好。 但是,对于诸如和这样的字符串,该字符串会导致特定的自然键算法失败,因为它仅与第一个整数匹配,在这种情况下,该整数将是和,因此它放弃了排序。因此,我认为可能会帮助匹配字符串中的所有数字并将它们分组在一起