mysql用select @@version;获取版本,postgresql用select version(); sql server用select @@version或serverproperty('productversion');跨库无通用语法,需按类型分发语句。

MySQL里用@@VERSION查版本最直接
MySQL不支持VERSION()函数(那是PostgreSQL的),必须用系统变量@@VERSION。执行SELECT @@VERSION;就能拿到完整版本字符串,比如8.0.33-0ubuntu0.22.04.2。注意双@符号不能少,单@会报Unknown system variable错误。
PostgreSQL必须用VERSION()函数
PostgreSQL没有@@VERSION这种写法,直接SELECT VERSION();即可。它返回包含编译参数和操作系统的长字符串,比如PostgreSQL 15.3 (Ubuntu 15.3-1.pgdg22.04+1) on x86_64-pc-linux-gnu。如果只要主版本号,得配合正则:SELECT substring(VERSION() from 'PostgreSQL (\d+\.\d+)');
SQL Server用@@VERSION但结果含混
SQL Server也认@@VERSION,但返回的是整个环境信息,包括Windows版本和SQL Server具体build号。如果只想提取数据库引擎版本,得用SERVERPROPERTY('ProductVersion')——它只返回15.0.2000.5这类纯数字格式。别指望@@VERSION能直接解析出主版本,字符串里夹杂太多无关字段。
跨数据库兼容查询几乎不存在
-
VERSION()在MySQL里是语法错误,在SQL Server里是未定义函数 -
@@VERSION在PostgreSQL里会报unrecognized configuration parameter - SQLite压根没这两个东西,得用
SELECT sqlite_version();
真要写通用脚本,只能靠连接时先探测数据库类型,再分发对应语句。硬塞一个“兼容写法”只会在线上翻车。










