Я создаю установщик для приложения. Пользователь может выбрать источник данных, который он настроил, и указать, какой это тип базы данных. Я хочу подтвердить, что типом базы данных действительно является Postgres, и, если возможно, какую версию Postgres они используют, отправив инструкцию SQL в источник данных.
Это не повторяющиеся вопросы. Мои исследования на сегодняшний день показывают, что вам нужны совсем другие подходы к этой проблеме.


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)
Это зависит от БД, и в случае, если эта функция существует в другой БД, это говорит о PostgreSQL в выводе
select version()
SHOW server_version;
(для полноты)
Интересно ... version () - это функция! Интересно, почему? Версия не будет изменять или возвращать разные значения при разных входах / обстоятельствах.
Любопытно, потому что я помню с давних времен, что в Sybase это была глобальная переменная, и версию можно было узнать, выполнив «select @@ version»
Прекратите дублировать вопросы! <stackoverflow.com/questions/101184/…>