sql - 在 PostgreSQL 中按版本号解析记录

标签 sql postgresql

我有一个具有“版本”属性的记录表。版本存储为文本。我知道如何匹配特定版本(例如 WHERE version = '1.2.3'),但我希望能够在版本上使用比较运算符(<、>、= 等)编号(例如 WHERE version > '1.2.3')。

有谁知道实现此目的的好方法吗?

最佳答案

对于 versionsort,转换为 cidr 可能 是一种解决方案。它适用于琐碎的情况。非数字字符可能会破坏聚会。

-- some data
DROP table meuk;
CREATE table meuk
        ( id SERIAL NOT NULL PRIMARY KEY
        , version text
        );
INSERT INTO meuk(version) VALUES
        ( '1.1.1'), ( '1.1.2'), ( '1.1.11'), ( '1.1.102')
        , ( '0.1.1'), ( '2.1.2'), ( '22.1.11'), ( '0.1.102')
        ;

SELECT * FROM meuk
ORDER BY version::cidr -- cast to cidr (less restrictive than inet)
        ;

结果:

DROP TABLE
CREATE TABLE
INSERT 0 8
 id | version 
----+---------
  5 | 0.1.1
  8 | 0.1.102
  1 | 1.1.1
  2 | 1.1.2
  3 | 1.1.11
  4 | 1.1.102
  6 | 2.1.2
  7 | 22.1.11
(8 rows)

关于sql - 在 PostgreSQL 中按版本号解析记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29565020/

相关文章:

sql - 相当于 MS Access 交叉表查询的 TSQL

sql - 如何在sql 2008中查询的where子句中使用新定义的列名

json - 如何在 Postgres 中的 JSON 字段上创建索引?

node.js - Docker-compose up 以代码 1 退出,但 docker-compose build 成功

database - 如何在 Postgres 中使用 Blob 数据类型

sql - 在表中存储多种格式

c# - SQL INSERT 奇怪地跳过第一条记录

mysql - 如何识别所有已完成任务的条目?

ruby-on-rails - Rails - 获取与特定 wday 匹配的记录

sql - 我如何从 Golang 中的 Postgres 数组中获取 slice ?