1.创建函数
CREATE FUNCTION versionCmp(ver varchar(32), app_version varchar(32))
RETURNS bool
RETURN CONCAT(LPAD(SUBSTRING_INDEX(SUBSTRING_INDEX(ver, '.', 1), '.', -1), 5, '0'),
LPAD(SUBSTRING_INDEX(SUBSTRING_INDEX(ver, '.', 2), '.', -1), 5, '0'),
LPAD(SUBSTRING_INDEX(SUBSTRING_INDEX(ver, '.', 3), '.', -1), 5, '0'))
>=
CONCAT(LPAD(SUBSTRING_INDEX(SUBSTRING_INDEX(app_version, '.', 1), '.', -1), 5, '0'),
LPAD(SUBSTRING_INDEX(SUBSTRING_INDEX(app_version, '.', 2), '.', -1), 5, '0'),
LPAD(SUBSTRING_INDEX(SUBSTRING_INDEX(app_version, '.', 3), '.', -1), 5, '0'));
2.假设表为tb,查阅符合条件的 [versionMin, versionMax]区间内的所有符合条件记录:
select * from tb where versionCmp(version, {versionMin})=1 and versionCmp({versionMax}, version)=1;