Mysql 我想从声明为varchar类型的S_ID列中获取最大值

Mysql 我想从声明为varchar类型的S_ID列中获取最大值,mysql,sql,Mysql,Sql,我的S_ID值为 S_1 S_2 S_3,...., S_11. 我使用从stock\u detail中选择MAX(S\u ID)来获得最大值 它一直工作到S_9,但当它达到S_11时:该查询只给我S_9作为最大值。如何将S_11作为最大值?请帮帮我,我只是个编程新手 使用此结构可以获得最大值: select s_id from stock_detail order by length(s_id) desc, s_id desc limit 1; 这将把较长的值放在第一位 如果要使用max

我的S_ID值为

S_1
S_2
S_3,...., S_11. 
我使用
从stock\u detail中选择MAX(S\u ID)
来获得最大值


它一直工作到S_9,但当它达到S_11时:该查询只给我S_9作为最大值。如何将S_11作为最大值?请帮帮我,我只是个编程新手

使用此结构可以获得最大值:

select s_id
from stock_detail
order by length(s_id) desc, s_id desc
limit 1;
这将把较长的值放在第一位

如果要使用
max()
,则需要解构数字。比如:

select concat('S_', max(replace(s_id, 'S_', '') + 0))
from stock_detail;
这允许您获得一个数值最大值,而不是字符最大值,这是问题的根源