При вызове MySQL SELECT @@VERSION;
или SELECT VERSION();
, я получаю, например, '5.7.11-log'
. Есть ли «известный» способ проверить, больше ли версия (или меньше), чем версия major.minor.patch? Если это не общеизвестный способ, существует ли способ без использования временной таблицы или пользовательской функции (вероятно, есть, но по той или иной причине в настоящее время ускользает от меня)? Я использовал бы это, чтобы проверить, есть ли поддержка для JSON type типа, которая была введена в версии 5.7.8.Как проверить версию больше чем базовое значение?
При изучении этого больше, кажется, это немного более жесткий гайка, чтобы мои навыки взломались. Например, я мог бы написать что-то вроде
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.
Хм, это выглядит как 'if ('5.10.8'> '5.7.8', 1, 0) AS Version;' будет одним примером-экземпляром, где выражение должно оцениваться как true и выбрать '1'. Вместо этого выбирается «0». – Veksi