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

时间:2019-04-21 11:42:23

标签: mysql sql

我有一张桌子,如下:

+-----------+------------+----------+------------+
| 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(cast(cast(substring('auto_no',2)assigned)))

但是我不确定查询中的值(2)是否未获得所需的输出。谁能帮我吗?

2 个答案:

答案 0 :(得分:4)

使用substring_index()和隐式转换。例如:

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

答案 1 :(得分:0)

您可以尝试使用substring_indextrim来删除前导零:

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

Demo