获取 PostgreSQL 版本号
服务器版本可以通过 SHOW
命令获取
postgres=# SHOW server_version; server_version ---------------- 13.1 (1 row)
但是,返回的值无法在 SQL 级别进一步操作。
有关服务器的详细版本信息可以通过 version()
函数获取
postgres=# SELECT version(); version -------------------------------------------------------------------------------------------------------- PostgreSQL 13.1 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 8.3.1 20191121 (Red Hat 8.3.1-5), 64-bit (1 row)
但是,如果只需要实际的版本号,特别是仅包含数字的表示法(例如 110002
),这对于比较操作很有用,则解析起来比较棘手且不方便。
pg_settings
视图直接提供服务器版本信息
postgres=# SELECT name, setting FROM pg_settings WHERE name LIKE 'server_version%'; name | setting --------------------+--------- server_version | 13.1 server_version_num | 130001 (2 rows)
或者使用 current_setting()
函数提取单个值
postgres=# SELECT current_setting('server_version'); current_setting ----------------- 13.1 (1 row)
应用程序可以使用 libpq
的 PQserverVersion()
函数(文档),它返回与 server_version_num
相同的整数。每种语言的数据库驱动程序也应该能够提供此功能。
可以使用以下查询提取“主”版本号(例如 9.6
、15
)
SELECT array_to_string(numbers[1 : array_upper(numbers,1) -1], '.') FROM (SELECT string_to_array(current_setting('server_version'), '.') numbers) n;