首页 > 解决方案 > 从 MySQL 中的 varchar 列获取最大值

问题描述

我需要从 varchar 类型的列中获取最大值。该值不太复杂,只是简单的值,例如CAR 001(不带空格),CAR 002(不带空格),CAR 003(不带空格)。

我尝试了其他类似问题的任何答案,但我的 SQL 语法总是出错,我尝试的最后一个是

SELECT MAX(CONVERT(`code`, UNSIGNED)) AS MAX FROM `account`

,但我得到的是0。真正的必须是3。请帮助我,抱歉英语不好。

标签: mysqlmax

解决方案


尝试使用SUBSTRING_INDEX隔离数字部分:

SELECT *
FROM yourTable
WHERE SUBSTRING_INDEX(col, ' ', -1) = (SELECT MAX(SUBSTRING_INDEX(col, ' ', -1))
                                       FROM yourTable);

假设只有一条记录具有最大 ID,我们可以更简单地使用LIMIT查询:

SELECT *
FROM yourTable
ORDER BY SUBSTRING_INDEX(col, ' ', -1) DESC
LIMIT 1;

推荐阅读