Mysql获取版本值,该值在版本范围内

col17t5w  于 2023-01-04  发布在  Mysql
关注(0)|答案(1)|浏览(94)

我有一个查询,其工作方式为:

@v='2.2.2'
select version FROM app_versions as V where @v between V.min_ver and V.max_ver;

其中版本表示为格式为“x.y.z”的字符串。
我写不出一个正确且可读的查询,有没有更好的mysql解决方案?

Famous test cases (min_ver -> max_ver):
1.10.1 -> 2.3.3
2.2.100 -> 2.2.111
nxowjjhe

nxowjjhe1#

如果我正确理解了这个问题,为什么不使用INET_ATON(expr),
给定IPv4网络地址的四点分隔表示形式字符串,返回一个整数,该整数表示按网络字节顺序(大端)排列的地址数值。如果INET_ATON()不理解其参数,或者expr为NULL,则返回NULL

select av.* 
from app_versions  av 
where INET_ATON('2.2.2') between INET_ATON(av.min_ver) and INET_ATON(av.max_ver);

https://dbfiddle.uk/btp2IhXb

相关问题