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

版:

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子字符串作为输入时获取最新版本。

最佳答案

对于您的特定示例:

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子句可确保开头字符相同。

关于mysql - 从表中按顺序获取版本字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55457018/

10-11 05:22