获取可比较的 PostgreSQL 版本号

Get comparable PostgreSQL version number

我需要确保可用的 PostgreSQL 版本不低于要求的版本。可以按如下方式请求版本字符串:

SELECT VERSION();

它 returns 我是这样的:

PostgreSQL 9.5.4, compiled by Visual C++ build 1800, 64-bit

理论上我可以解析这个字符串,但我不确定未来版本的 PostgreSQL 服务器是否会保留这个词序。

PostgreSQL 是否有一些可预测的版本报告可能分为主要版本号和次要版本号?

show server_version_num; --returns 90602::text
show server_version; --returns 9.6.2::text

您可以查询位于 pg_catalog

的 PostreSql 视图 pg_settings
select * from pg_settings where name like '%version%';

上面的查询会给你带来两个设置:

name                   other columns .....
server_version               .....
server_version_num           .....

对于您的具体情况,您需要以下配置:

select name, setting, min_val, max_val 
  from pg_settings 
 where name = 'server_version_num';

name                   setting    min_val  max_val 
--------------------------------------------------
server_version_num     90503       90503    90503

从这里您可以使用 min_valmax_val

此查询等同于@ŁukaszKamiński 提供的答案,其中包含更多详细信息(如果您 select 所有列。)

https://blog.2ndquadrant.com/finding-postgresql-version/ 说:

您可以在这样的 SQL 查询中更轻松地使用它

SELECT current_setting('server_version_num');