在调用MySQL SELECT @@VERSION;
或SELECT VERSION();
时,我会获得'5.7.11-log'
。是否有“众所周知”的方法来检查版本是否比某些 major.minor.patch 版本更大(或更小)?如果不是一个众所周知的方式,有没有办法没有使用临时表或用户定义的功能(可能有,但由于某种原因目前逃避我)?我会用它来检查版本 5.7.8 中是否支持JSON type类型。
经过对此研究的更多,看来这对我的技能破解来说有点难度。例如,我可以编写类似
的内容SELECT SUBSTRING_INDEX(@@VERSION, '.', 1) AS major, SUBSTRING_INDEX(SUBSTRING_INDEX(@@VERSION,'.', 2), '.', -1) AS minor, SUBSTRING_INDEX(SUBSTRING_INDEX(@@VERSION,'.', -2), '.', -1) AS patch;
但这并不完全令人满意(例如,请参阅-log)并且它不直接检查功能是否存在。
我将此交叉发布到DBA溢出How to check if feature (JSON) exists, and/or version。
答案 0 :(得分:0)
如果条件有版本
,请使用mysql> SELECT VERSION();
+-----------+
| VERSION() |
+-----------+
| 5.7.14 |
+-----------+
1 row in set (0.00 sec)
mysql> select if(VERSION() > '5.7.14' ,1,0);
+-------------------------------+
| if(VERSION() > '5.7.14' ,1,0) |
+-------------------------------+
| 0 |
+-------------------------------+
1 row in set (0.00 sec)
mysql> select if(VERSION() > '5.7.13' ,1,0);
+-------------------------------+
| if(VERSION() > '5.7.13' ,1,0) |
+-------------------------------+
| 1 |
+-------------------------------+
1 row in set (0.00 sec)
答案 1 :(得分:0)
我会交叉引用answer by Rick here。具体来说,MySQL中有一些特殊的注释语法,其中MySQL将一段代码解释为有效的MySQL SQL或仅仅是一个简单的注释部分。以下是文档的链接:http://dev.mysql.com/doc/refman/5.7/en/comments.html以及一些值得注意的示例:
SELECT /*!JSON_TYPE*/('["a", "b", 1]');
和
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
。