按版本号

时间:2017-12-22 19:21:47

标签: mysql

我有一个应用版本,例如2.15.3。

我的应用程序的模块版本以应用程序版本的前两个字符开头。所以模块版本可能是2.15.1.8。

模块版本号存储为名为version的varchar列。

如果满足以下两个条件,则模块仅适用于应用版本:

  • 模块的第一个数字=应用程序的第一个数字
  • 模块的第二个数字< =应用程序的第二个数字

我希望能够从符合上述两条规则的表格中选择所有模块。

因此对于app 2.15.3,它应该返回2.15.1.8,但不是2.16.1.2,而不是1.14.1.2。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

我相信我找到了一种方法(虽然我可以批评):

SELECT * 
FROM my_table 
WHERE substring_index(version, '.', 1) = :APP_NUM_ONE
AND substring_index(substring_index(version, '.', 2), '.', -1) <= :APP_NUM_TWO;

在这种情况下,其中:APP_NUM_ONE = 2,并且:APP_NUM_TWO = 15。