我正在尝试编写一个SQL
函数,该函数确定Postgres Server是否在Windows上运行,是否可能,或者是否有办法获取正在运行的Server的平台?
答案 0 :(得分:0)
您只需使用select version()
我在Linux Alpine服务器(通过Docker容器)上进行了尝试,并得到了以下信息:
test =>选择version();
version
-------------------------------------------------------------------------------------------------
PostgreSQL 9.6.8 on x86_64-pc-linux-musl, compiled by gcc (Alpine 6.2.1) 6.2.1 20160822, 64-bit
(1 row)
您可以在https://www.postgresql.org/docs/current/functions-info.html
上获得有关postgres系统信息功能的更多信息。希望对您有帮助!
答案 1 :(得分:0)
这是我最后编写和使用的代码,在Postgres 11版本上效果很好:
CREATE OR REPLACE FUNCTION GetPLatform()
RETURNS varchar
AS
$$
declare platform varchar;
begin
SELECT CASE
WHEN OSVersion.OS LIKE '%w64%' THEN 'windows'
WHEN OSVersion.OS LIKE '%w32%' THEN 'windows'
WHEN OSVersion.OS LIKE '%mingw%' THEN 'windows'
WHEN OSVersion.OS LIKE '%visual studio%' THEN 'windows'
WHEN OSVersion.OS LIKE '%linux%' THEN 'linux'
WHEN OSVersion.OS LIKE '%mac%' THEN 'mac'
ELSE
'UNKNOWN'
END into platform
FROM (SELECT
substr(substr(version(), strpos(version(), ' on ')+3), 1,
strpos(substr(version(), strpos(version(), ' on ')+3),
', compiled by')-1) as OS)
as OSVersion;
return platform;
end;
$$
LANGUAGE PLPGSQL;
select GetPLatform()
您可以根据需要在其他平台上对其进行调整...