Mysql 如何从varchar类型值中选择最大数

Mysql 如何从varchar类型值中选择最大数,mysql,sql,Mysql,Sql,我的表格如下: +-----------+------------+----------+------------+ | letter_no | year_index | auto_no | date_stamp | +-----------+------------+----------+------------+ | 1 | 100 | 2018-100 | 2018-12-30 | | 2 | 101 | 2018-101 |

我的表格如下:

+-----------+------------+----------+------------+
| letter_no | year_index | auto_no  | date_stamp |
+-----------+------------+----------+------------+
|         1 |        100 | 2018-100 | 2018-12-30 |
|         2 |        101 | 2018-101 | 2018-12-30 |
|         3 |        102 | 2018-102 | 2018-12-31 |
|         4 |          1 | 2019-001 | 2019-01-01 |
|         5 |          2 | 2019-002 | 2019-01-01 |
|         6 |          3 | 2019-003 | 2019-01-02 |
+-----------+------------+----------+------------+
第三列包含一个自动生成的数字,由当前年份、一个连字符和一个从001开始的索引号组成。自动无字段为varchar()

所以。我只需要从自动编号中选择数字(不带年份、连字符或零),如100、101、102、1、2和3等

我使用以下查询来获得所需的输出

从字母中选择max(转换(子字符串('auto_no',2)作为签名))

但是我不确定查询中的值(2)是否没有得到所需的输出。有人能帮我吗?

使用
子字符串\u index()
和隐式转换。例如:

select max(substring_index(auto_no, '-', -1) + 0)
from letter;

您可以使用
substring\u index
trim
删除前导零来尝试此查询:

select trim(leading '0' from
            substring_index(auto_no, '-', -1))
from tbl

如果总是相同的格式,您可以简单地将现有查询修改为
max(cast(子字符串('auto_no',6)as signed))
,提取连字符后的字符串。