从表中

时间:2019-04-01 14:02:23

标签: mysql sql

我有一个表格,其中版本被列为一列。版本详细信息如下。

版本:

11.1R1.8
11.1R1.80
11.1R1.9
11.1R1.1
11.1R1.10
11.1R1.2

我需要编写一个查询以有序地获取此查询。我尝试使用如下所示的like命令,但它的获取顺序与上面相同。

select * from <table> where version like("11.1R1%");

对此进行任何输入都会有所帮助。确切的要求是在提供11.1R1子字符串作为输入时获取最新版本。

1 个答案:

答案 0 :(得分:0)

对于您的特定示例:

select *
from <table>
where version like('11.1R1%')
order by substring_index(version, '.', -1) + 0 desc
limit 1;

where确保R之前的部分和之后的主要版本相同。

您也可以将其表示为:

order by length(version) desc, version desc

这不会将版本组件转换为数字。再次适用于您的情况,因为where子句可确保开头字符相同。