当列为varchar时在mysql中查找max

当列为varchar时在mysql中查找max,sql,mysql,Sql,Mysql,我有一个varchar列,其中包含如下数据 top<somenumber> 如何将上述查询建模为只考虑后跟“top”的数字如果始终是“top[N]”,并且您想要最大N,您可以尝试: SELECT MAX(CAST(SUBSTR(`catalogid`,4) AS DECIMAL(10,2)) ... 一般来说,您可以使用: 然而,这里有一个有趣的小问题,我们需要删除top: select max(cast(substring(catalogid, 4) as decima

我有一个varchar列,其中包含如下数据

top<somenumber>
如何将上述查询建模为只考虑后跟“top”的数字

如果始终是“top[N]”,并且您想要最大N,您可以尝试:

SELECT MAX(CAST(SUBSTR(`catalogid`,4) AS DECIMAL(10,2)) ...

一般来说,您可以使用:

然而,这里有一个有趣的小问题,我们需要删除
top

select
    max(cast(substring(catalogid, 4) as decimal(10,2))) as maxid
from
    catalog
你看,在这里,我们用来限制
catalogid
字段仅为数字

此外,你可能想退房,因为他们可以非常方便

select
    max(catalogid)
from
    catalog
select
    max(cast(substring(catalogid, 4) as decimal(10,2))) as maxid
from
    catalog