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))
,提取连字符后的字符串。