处理存储在MySQL中的版本号

时间:2014-02-24 22:23:07

标签: mysql

我有一个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函数来解决这个问题吗?

1 个答案:

答案 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。这样,字符串就可以直接比较了。