我有一个MySQL表,其中包含有关某些服务器的信息,包括他们运行的软件的版本号。
软件的版本编号例如为1.1.0.1,但1.12.0.1,1.12显然高于1.1。
我试图使用version_number < 1.9
查询运行版本号为1.8及更低版本的服务器,但是对于corse,这是捕获版本1.10,1.11,1.12,等等。
我可以轻松地在我的代码中解决这个问题,但我宁愿拉回我需要的结果集。
我可以使用mysql函数来解决这个问题吗?
答案 0 :(得分:1)
您可以通过以下方式解决您的特定问题:
where substring_index(version_number, '.', 1) < 1 or
(substring_index(version_number, '.', 1) = 1 and
substring_index(substring_index(version_number, '.', 2), '.', -1) + 0 < 9
)
基本上,这会对版本号进行逐场比较。
我建议你更新字段,使每个组件都有前导零:0001.0001.0000.0001
。这样,字符串就可以直接比较了。