获取 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;
