按PostgreSQL中的版本号解析记录

时间:2015-04-10 15:16:42

标签: sql postgresql

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

有谁知道实现这个目标的好方法?

1 个答案:

答案 0 :(得分: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)
        ;

Rseult:

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)
相关问题