如何确认数据库为Postgres及其使用SQL的哪个版本?

时间:2020-03-06 14:25:34  来源:igfitidea点击:

我正在为应用程序构建安装程序。用户可以选择他们已经配置的数据源,并指定它是哪种数据库。我想通过将SQL语句发送到数据源来确认数据库类型确实是Postgres,如果可能的话,确认它们正在运行的Postgres版本。

解决方案

SELECT version();

试试这个:

mk=# SELECT version();
                                            version                                            
-----------------------------------------------------------------------------------------------
 PostgreSQL 8.3.3 on i486-pc-linux-gnu, compiled by GCC cc (GCC) 4.2.3 (Ubuntu 4.2.3-2ubuntu7)
(1 row)

该命令在MySQL中也适用:

mysql> select version();
+--------------------------------+
| version()                      |
+--------------------------------+
| 5.0.32-Debian_7etch1~bpo.1-log | 
+--------------------------------+
1 row in set (0.01 sec)

据我所知,sqlite中没有版本命令。

PostgreSQL有一个可以调用的version()函数。

SELECT version();

它将返回如下内容:

version
-----------------------------------------------------------------------------------------------
PostgreSQL 8.3.3 on i486-pc-linux-gnu, compiled by GCC cc (GCC) 4.2.3 (Ubuntu 4.2.3-2ubuntu7)

这取决于数据库,如果此功能存在于另一个dbms中,则输出中显示PostgreSQL

select version()

SHOW server_version;

(为了完整性)

有趣的是... version()是一个函数!我想知道为什么?在不同的输入/情况下,版本不会更改或者返回不同的值。

很好奇,因为我记得从前在Sybase中它曾经是全局变量,可以通过执行" select @@ version"来找到版本。