有没有办法高效存储https://semver.org https://semver.orgPostgres 中的版本字符串,然后执行最新查询。例如假设列的值为 1.1.0, 1.0.0, 1.2.0, 1.0.1-rc.1+B001 。我想排序并获取最新版本号(1.2.0),理想情况下是一个优化且高性能的查询,因为它将被频繁查询。
注意:我想对单个列进行排序并获取最新的而不是比较两个不同的列。还希望它完全符合 semver 标准。
接受的答案确实适用于排序,但将包括例如版本“10.1”如果查询例如version < '2'
. See .
相反,如果您在列上定义排序规则,则在按版本过滤时会得到正确的结果:
CREATE COLLATION en_natural (
LOCALE = 'en-US-u-kn-true',
PROVIDER = 'icu'
);
CREATE TABLE test (
version varchar(20) collate en_natural
);
insert into test values
('10.1'),
('2.1'),
('1.2.9'),
('1.24'),
('1.23.231+b'),
('1.23.231+a'),
('1.23'),
('1.23.231-test.beta'),
('1.23.231-test.alpha'),
('1.23.45-rc.2+B001'),
('0.9');
SELECT *
FROM test
WHERE version < '2.0'
ORDER BY version desc;
-- note results do not include 10.1
1.24
1.23.231+b
1.23.231+a
1.23.231-test.beta
1.23.231-test.alpha
1.23.45-rc.2+B001
1.23
1.2.9
0.9
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)