【问题标题】:Dealing with version numbers stored in MySQL处理存储在 MySQL 中的版本号
【发布时间】:2014-02-24 22:23:07
【问题描述】:

我有一个 MySQL 表,其中包含有关某些服务器的信息,包括它们正在运行的软件的版本号。

软件的版本号有,比如1.1.0.1,也有1.12.0.1,1.12明显高于1.1。

我正在尝试使用version_number < 1.9 查询运行版本号为 1.8 及以下的服务器,但实际上这正在捕获版本 1.10、1.11、1.12 等。

我可以在我的代码中轻松解决这个问题,但我宁愿只是拉回我需要的结果集。

有没有可以用来解决这个问题的mysql函数?

【问题讨论】:

标签: mysql


【解决方案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。这样,字符串就可以直接进行比较了。

【讨论】:

  • 谢谢,我试试这个。遗憾的是,我无权访问插入数据库的脚本,只能访问数据库报告。
  • 完美运行。谢谢!
猜你喜欢
  • 2014-04-13
  • 1970-01-01
  • 2014-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-19
  • 1970-01-01
相关资源
最近更新 更多