当列是varchar时,在mysql中查找max

时间:2009-09-13 23:37:49

标签: sql mysql

我有一个varchar列,其中包含这样的数据

top<somenumber>

所以“顶部”这个词后跟数字。我正在尝试在此表中插入一条记录,并试图找出应该进入的下一个值。

无论如何我能找到这个栏目的最大值吗?

也许是这样的?

select * from catalog ORDER BY CAST(`catalogid` AS DECIMAL(10,2)) DESC limit1;

我如何塑造上述查询以仅考虑后跟'top'

的数字

2 个答案:

答案 0 :(得分:3)

嗯,一般来说,你可以使用max

select
    max(catalogid)
from
    catalog

但是,我们在这里有一个有趣的小问题,我们需要删除top

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

您知道,我们在这里使用substringcatalogid字段限制为该数字。

此外,您可能需要查看aggregate functions,因为它们非常方便!

答案 1 :(得分:2)

如果它总是“顶部[N]”,并且你想要最大N,你可以尝试:

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